版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
首先要理解什么是控制反转,和依赖注入。
概念对比:
控制反转 | DI (dependency injection) 依赖注入 |
含义: 把原理new对象的这种方式转换成了,spring通过反射创建对象的方式。 spring创建完的对象放到一个容器中,谁需要就给谁注入进去. 简单说:把创建对象和管理对象的权利交给spring |
含义:就是给对象的属性设置值. 原来给对象的属性设置值: set方法给对象设置值 构造方法给对象初始化的时候设置值. |
对象的创建 |
对象属性值的设置 |
控制反转:
1.创建对象的几种方式?
构造方法
静态工厂
实例工厂
2.spring创建对象的范围
问题: 每次获取对象的时候,spring是新创建一个对象还是始终给我们返回同一个对象?
单例: 内存中只有一个对象,每次获取到该对象的地址值一样.
多例:内存中的每个对象都是一个新的对象,他们的地址值都不同.
答案: spring默认的情况下创建的对象都是单例的. (每次返回的对象都是同一个)
3.spring创建对象的生命周期
spring创建的对象什么时候创建,什么时候运行,什么时候销毁.?
1. 创建, 加载配置文件的时候
2. 运行,使用该对象的时候
3.销毁 ,spring的容器关闭的时候
依赖注入:
1.注入依赖的几种方式?
set方式设置属性
构造方式注入
p名称空间注入和c名称空间注入
复杂数据类型注入
常用注解:
注解名 | 作用 |
@Component @Component("abc") |
默认的id是类名首字母小写 手动的指定了 <bean id="abc" class="xxxx"> |
@Controller | 确定是表现层/控制层 使用Controller |
@Service | 业务逻辑使用 Service |
@Repository | dao持久层使用Repository |
@Autowired |
自动注解 |
@Qualifier("id") | 注入方式1:(根据的bean id值来指定) |
@Value("#{son1}") | 注入方式2: |
@Resource(name="son1") | 注入方式3:jdk的注入 |