一、Spring基础
1. Environment
环境抽象:profiles 和 properties.
2. SpEL
Spring EL 表达式
3. 设计模式 Template模板
封装样板室代码(如资源获取、回收)
二、依赖注入(DI、IOC)
1. 构造器注入和Setter方法注入
2. 装配bean(以下三种方式可以混合使用)
2.1 在XML中进行显式配置。
2.2 在Java中进行显式配置。
2.2.1 @Configuration Config类注解
2.2.2 @Bean Bean生成方法注解,方式通过new生成对象。
通过new时候传入对应Bean的方式注入其它Bean
2.3 隐式的bean发现机制和自动装配(因在源码上注解,无法支持第三方库注入,以上两种可以)
2.3.1 Bean: @Component(@Controler,@Service, @Repository) 定义Bean
2.3.2 Scan:@ComponentScan 扫描对应位置下Bean
2.3.3 Wire: @Autowired(Spring规范) @Inject 装配(注入)
三、高级装配
1. Bean Profile (JavaConfig方式,也可用XML方式)
@Profile 通过配置,指定生成的Bean
2.激活Profile
指定激活哪个Profile,配置方式如下:
3. 条件化Bean
根据条件判断结果,确定是否创建Bean
注:@Profile本身也使用了@Conditional
4. 自动装配的歧义性处理
首选:@Primary 限定某个:@Qualifier
5. bean的作用域
默认Singleton,通过@Scope指定
四、面向切面
1. AOP基础
1.1 切面(Aspect):通知(advice)、切点(pointcut)
1.2 连接点(join point)
1.3 织入(Weaving):把切面应用到目标对象(切点)并创建新的代理对象的过程
1.3.1 织入方式:
1.3.2 Spring使用第三种:动态代理
2. 切面示例(JavaConfig方式,也可用XML方式)
2.1 通知及切点
2.2 环绕通知,包含2.1所有通知(before、after)
3. 处理通知中的参数(传入参数给通知)
4. Spring 注入 AspectJ
Srping 只实现了部分AOP规范,如功能不满足,可对接AspectJ
五、SpringMVC
视图:JSP、Thymeleaf等
六、 Srping Web Flow(工作流)
1. Spring Web Flow 状态
1.1 行为(Action):行为状态是流程逻辑发生的地方
1.2 决策(Decision):决策状态将流程分成两个方向,它会基于流程数据的评估结果确定流程方向
1.3 视图(View):视图状态会暂停流程并邀请用户参与流程
1.4 结束(End):结束状态是流程的最后一站。一旦进入End状态,流程就会终止
1.5 子流程(Subflow):子流程状态会在当前正在运行的流程上下文中启动一个新的流程(只流程可包含以上四种)
1.6 转移(状态转移,如上例子)
转移使用元素来进行定义,它会作为各种状态元素(、、)的子元素
2. 流程数据
2.1 变量(var、evaluate、set)
2.2 变量作用域(如上例子,viewScope、flowScope)
3. 工作流例子
3.1 订购pizza主流程
3.2 其中创建订单子流程
七、Spring Security
1. 保护应用
基于Filter
1.1 启用 Spring Security
1.2 连接用户库(支持写死、jdbc、ldap等)
1.3 拦截请求
2. 保护视图
3. 保护方法
@EnableGlobalMethodSecurity 基于代理
3.1 保护方法调用
@Secured(Spring规范), @RolesAllowed 限制角色
3.2 使用表达式定义安全规则
3.3 创建安全表达式计算器
因3.2注解表达式过长,不可调试,可定义单独许可计算器类
八、Spring持久化、缓存支持
1. 关系型数据库支持
1.1 Spring jdbc
1.2 Hibernate
1.3 JPA
2. NoSQL支持
2.1 MongoDB 非结构文档数据库
2.2 Neo4J 图数据库
2.3 Redis 缓存,可持久化
3. 缓存支持
3.1 Ehcache
3.2 Redis
九、Spring 远程服务支持
1. RPC
1.1 RMI
1.1.1 RMI实现步骤
1.1.2 RMI缺点
(1)通过任意端口交互,难以穿透防火墙(防火墙限制端口)
(2)客户端、服务端均需Java开发
1.2 Hessian和Burlap
基于Http
1.3 Spring HttpInvoker
1.4 SOAP web service
通过Java API for XML Web Service(JAX-WS)实现支持
2. RESTful
REST与RPC几乎没有任何关系。RPC是面向服务的,并关注于行为和动作;而REST是面向资源的,强调描述应用程序的事物和名词。
十、异步消息
1.服务端之间消息协议
JMS(Quene、Topic)
AMQP(Exchange -> Quene) 实现:如RabbitMQ
2.浏览器与服务端消息协议
WebSocket(底层) -> STOMP (高层)
浏览器端实现:SocketJS STOMP 服务端实现:如ActiveMQ,RabbitMQ
3. Email支持
十一、JMX
JMX:JAVA Management Extensions
功能:在应用的运行期查看应用程序的内部情况并且能够更改配置,JMX管理工具如:JConsole、VisualVM
1. MBean导出到MBean服务器
Tomcat自带服务器,或者指定服务器
2. 远程管理MBean(连接到MBean服务器管理MBean)
3. JMX通知 使MBean与外部世界进行主动通信
领取专属 10元无门槛券
私享最新 技术干货