篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring框架_@AutoWiredAnnotationBeanPostProcessor执行分析相关的知识,希望对你有一定的参考价值。
AutoWiredAnnotationBeanPostProcessor 执行依赖注入的时候(解析@Autowired)调用了postProcessProperties 方法
这个方法首先要找到哪些属性,方法被标注了@Autowired注解,把这些数据添加到 InjectMetadata中,然后调用metadata.inject方法按类型进行依赖注入,注入时按类型进行查找
按类型查找的流程:
- 首先通过反射拿到被注解标注的字段或者方法
- 再将这个字段,或者方法中的参数添加到DependencyDescriptor中
- 通过beanFactory的doResolveDependency方法找到和这个属性具有相同类型的bean
- 最后通过反射的set方法把属性赋值
介绍
是一个贯穿整个项目的管理对象的容器
一站式框架
1.正是因为spring框架性质是属于容器的性质,容器中装什么对象就有什么功能所以
是一站式框架。
2.不仅不排斥其它框架,还能帮其它框架管理对象
3.aop支持
4.ioc思想 控制反转(Inversion of Control)
把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语。
包括
依赖注入(Dependency Injection,简称DI)
和
依赖查找(Dependency Lookup)。
IoC可以认为是一种全新的【设计模式】,但是理论和时间成熟相对较晚,
并没有包含在GoF中(java的23种设计模式)。
5.spring jdbc
6.aop事物
7.junit测试支持
搭建
1.导包
最基础的4个核心包
beans
context
core
expression
spring 使用的是Apache的日志包
com.springsource.org.apache.commons.logging-1.1.1.jar
老版本中,还需要:
com.springsource.org.apache.log4j-1.2.15.jar
2.创建类
3.创建xml配置文件 注册对象到容器
3.1文件位置任意 (建议src目录下)
3.2文件名任意建议applicationContext.xml
3.3约束引入
preferences=》xml=》xml catalog =》 add =》File System =》
spring=》 schema =》 beans =》 .xsd
key type: Schema location
key:加 / + .xsd
<beans><beans/>
Design 右键Edit =》 add =》 xsi =》将自己添加的.xsd引入
4.注册对象到容器
<!-- 将User对象交给spring容器管理 -->
<bean name="user" class="org.spring.domain.User"></bean>
5.测试
@Test
public void test(){
//1)获取容器
ConfigurableApplicationContext cac =
new ClassPathXmlApplicationContext("applicationContext");
//2)向容器“要”对象
User user = (User)cac.getBean("user");
//3)使用获取过来的对象
System.out.println(user);
//4)释放资源 关闭容器
cac.close();
}
概念
1.思想 IOC
di 依赖注入
注入方式: 构造方法 ,set方法注入,字段注入(不推荐)
注入类型: 基本类型 引用类型
2.BeanFactory & ApplicationContext
BeanFactory
spring的原始接口,针对原始接口实现类实现的功能较为单一
特点:每次获取对象的时候才创建对象(原因:当时的系统资源较小)
ApplicationContext
特点:每次容器启动时就会创建容器中配置的所有对象
提供了更多的功能
spring配置详解