个人博客网:https://wushaopei.github.io/ (你想要这里多有)
一、对象的生命周期
1、IOC之Bean的生命周期
创建带有生命周期方法的bean
配置信息:
加载结果图解:
2、Bean的后置处理器BeanPostProcessor
bean的后置处理器可以在bean对象调用初始化方法之前和之后做一些工作。
如何创建一个后置处理器呢,只需要实现BeanPostProcessor接口
测试bean的后置处理器
配置信息:
测试代码:
工作流程图解:
二、Spring管理数据库连接池
前提:导入数据库连接池的jar包
1、Spring配置管理数据库连接池对象(重点)
创建 dataSource.xml 配置文件
配置bean
2、Spring引入单独的jdbc.properties配置文件(重点)
PropertyPlaceholderConfigurer
jdbc.properties配置文件:
容器配置文件:
打印结果——图解:
3、使用context名称空间加载jdbc.properties配置文件(重点)
结果打印图解:
三、注解功能
1、注解配置Dao、Service、Controller组件
通过注解分别创建Dao、Service、Controller
Spring配置bean的常用注解有
- @Controller 配置web层组件
- @Service 配置业务层Service组件
- @Repository 配置持久层Dao组件
- @Component 配置除了web层,Service层,Dao层之外的其他组件bean对象
- @Scope 配置作用域
导包:
工程:
单例:
多例:
测试的代码:
流程分析:
2、指定扫描包时的过滤内容
使用context:include-filter指定扫描包时要包含的类
使用context:exclude-filter指定扫描包时不包含的类
<context:include-filter /> 设置包含的内容
注意:通常需要与use-default-filters属性配合使用才能够达到“仅包含某些组件”这样的效果。即:通过将use-default-filters属性设置为false,
<context:exclude-filter /> 设置排除的内容
类别 |
示例 |
说明 |
annotation |
com.webcode.XxxAnnotation |
过滤所有标注了XxxAnnotation的类。这个规则根据目标组件是否标注了指定类型的注解进行过滤 |
assignable |
com.webcode.BaseXxx |
过滤所有BaseXxx类的子类。这个规则根据目标组件是否是指定类型的子类的方式进行过滤。 |
aspectj |
com.webcode.*Service+ |
所有类名是以Service结束的,或这样的类的子类。这个规则根据AspectJ表达式进行过滤。 |
regex |
com.webcode.anno.* |
所有com.webcode.anno包下的类。这个规则根据正则表达式匹配到的类名进行过滤。 |
custom |
com.webcode.XxxTypeFilter |
使用XxxTypeFilter类通过编码的方式自定义过滤规则。该类必须实现org.springframework.core.type.filter.TypeFilter接口 |
applicationContext.xml 中配置的内容如下
以上配置会包含所有@Service注解的类。排除com.webcode.service.BookService类
3、使用注解@Autowired自动装配
使用@Autowired注解实现根据类型实现自动装配
@Autowired 注解 会自动的根据标注的对象类型在Spring容器中查找相对应的类。如果找到,就自动装配。
使用@Autowired注解,不需要get/set方法
4、多个同类型的bean如何自动装配
如果资源类型的bean不止一个,默认根据@Autowired注解标记的成员变量名作为id查找bean,进行装配★
打印图解:
5、使用@Qualifier装配指定id的bean对象
如果根据成员变量名作为id还是找不到bean,可以使用@Qualifier注解明确指定目标bean的id★
6、@Autowired注解的required属性作用
@Autowired注解的required属性指定某个属性允许不被设置
7、@Autowired和@Qualifier在方法上的使用
在方法的形参位置使用@Qualifier注解
8、泛型注入
测试泛型依赖注入
四、Spring的专有测试
@ContextConfiguration
@RunWith
- 导入spring-test-4.3.18.RELEASE.jar
- 配置@ContextConfiguration
- 配置@RunWith