Spring实战第四版思维导图
2021-05-17 19:16:13 0 举报
AI智能生成
学习Spring实战第四版的思维导图,刚看到第四章,还在学习中
作者其他创作
大纲/内容
Spring之旅
简化Java开发
POJO
依赖注入(Dependency import)-保持松散耦合
装配
应用组件之间协作的行为
使用xml,bean标签进行
使用ClassPathXmlApplicationConText加载xml文件
使用@Bean注解
构造器注入
将所依赖的对象作为一个构造器的参数传入,而不是在构造器的方法体内进行new对象(甚至是接口),这样可以传任何属性的对象,new只能指定一个参数
应用切面(aspect-oriented programming,AOP)-分离系统的功能,使其成为可以重用的组件
声明切面
xml-先用<bean>声明,再用<aop>定义切面
可以应用到系统中,但系统的其他服务不需要显示的调用
使用模板消除样板式代码
Container
bean容器
提供基础的DI支持
bean的生命周期
实例化-new
填充属性
调用BeanNameAware的setBeanName()方法
调用BeanFacatoryAwre的setBeanFactory()方法
调用ApplicationContextAware的setApplicationContext()方法
调用BeanPostProcessor的预初始化方法
调用InitiailizingBean的afterPropertiesSet()方法
调用自定义的初始化方法
调用BeanPostProcessor的初始化后方法
容器使用到容器关闭
调用DisposableBean的destory()方法
调用自定义的销毁方法
应用上下文
基于BeanFactory创建,提供应用框架级别的服务,比如从属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者
常见的应用上下文
AnnotationConfigApplicationContext
从一个或多个基于Java的配置类中加载Spring应用上下文
AnnotationConfigApplicationContext
从一个或多个基于Java的配置类中加载Spring Web应用上下文
ClassPathXmlApplicationContext
从类路径下的一个或多个XML配置文件中加载上下文定义
FileSystemXmlApplicationContext
从文件系统下的一个或多个XML配置文件中加载上下文定义
XmlWebApplicationContext
从Web应用下的一个或多个配置文件中加载上下文定义
Spring 概览
Spring模块
20多个模块,每个模块有三个JAR文件
二进制类库
源码的JAR文件
JavaDoc的JAR文件
6类功能
数据访问和集成
JDBC
Transaction
ORM
OXM
Messageing
JMS
Web与远程调用
Web
WebServlet
WebPorlet
WebSocket
面向切面变成
AOP
Aspects
Instrumentation
Instrument
为JVM添加代理(agent)的功能
InstrumentTomcat
Spring核心容器
Beans
Core
Context
Expression
ContextSupport
测试
test
Spring Protfolio
Spring Web Flow
Spring Web Service
Spring Security
Spring Integration
Spring Batch
Spring Data
Spring Social
Spring Mobile
Spring for Andriod
Spring Boot
Spring新功能
3.2
Controller可以使用Servlet 3.0异步请求
测试框架
RestTemplate客户端测试支持
@ControllerAdvice注解=@ExceptionHandler+@InitBinder+@ModelAttributes
@Autowired、@Value、@Bean作为元注解
4.0
提供了WebSocket支持
总结
简化企业级代码开发,松散代码耦合
装配Bean
Spring配置的可选方法
在XML里进行显式配置
在Java中进行显式配置
隐式的bean发现机制和自动装配
自动化装配bean
组件扫描(component scanning)
Spring自动发现应用上下文创建的bean
@Component定义组件
@Component("ID")为Component设置ID
@Named大多数场景下可互换
@ComponentScan开启组件扫描,默认扫描与注解所在类相同的bao
@ComponentScan("包名")
@ComponentScan(basePackages="包名")
@ComponentScan(basePackeges={"包名1","包名2"})
xml扫描-Spring Context的<context:component-scan>元素
自动装配(autowiring)
Spring自动满足bean之间的依赖
@Autowired注入bean
用在构造器
用在Setter方法
如果没有匹配到bean抛出异常,可设置required=false来避免
Spring还是会尝试自动装配,没匹配到的话让他处于未装配状态
可使用@Inject替换
来自Java依赖注入规范
通过Java代码装配bean
编写方法获取创建所需类型的实例,然后添加@Bean注解
@Bean(name="名字")
通过XML装配Bean
创建XML配置规范
配置文件顶部声明多个XML模式
声明一个简单的<bean>
<bean class="xxx.class">
高级装配
环境和profile
@Profile指定bean属于哪一个环境(profile)
激活profile
作为DispatcherServlet的初始化参数
作为Web应用的上下文参数
作为JNDI条目
作为环境变量
作为JVM的系统属性
在集成测试类上,使用ActiveProfiles注解设置
条件化的bean
@Conditional注解,给定的条件为true时,才会创建对应的bean
处理自动装配第二段歧义性
标示首选的bean
@Primary注解和@Component或@Bean注解组合使用
限定自动装配的Bean
@Qualifier("类名")和@Autowired组合使用
bean的作用域
单例(singleton)
给定的一个bean被注入多少次都是同一个实例
原型(Prototype)
每次注入或通过Spring应用上下文获取的时候都会创建一个新的bean实例
会话(Session)
在Web应用中,为每个会话创建一个bean实例
@Scope(value=WebApplicationContext.SCOPE_SESSION,proxyMode=ScopedProxyMode.INTERFACES)
ScopeProxyMode枚举,可以是类,接口
请求(Request)
在Web应用中,为每个请求创建一个bean实例
使用@Scope注解指定作用域,@Scope(ConfigurationBeanFactory.SCOPE_PROTOTYPE)
运行时值注入
为了避免硬编码值
属性占位符(Property placeholder)
注入外部的值
使用@PropertySource注解和Environment
@PropertySource指定属性源文件路径
Environment通过@Autowired注入,使用getProperty方法获取对应的key对应的value
解析属性展位符
支持将属性定义到外部的属性文件中,然后使用占位符值将其插入到SpringBean中,${...}
Spring表达式语言(SpEL)
#{....}
可以引用其他对象的属性
表示字面值
计算String类型的字面值
引用bean、属性和方法
面向切面的Spring
子主题
0 条评论
下一页