spring注解(二)

@Import

直接写上被导入的组件,容器中就会自动注册这个组件,id默认是组件的全类名

ImportSelector: 返回需要导入的组件的全类名数组, 需要将实现importSelector接口类传入到import配置中

ImportBeanDefinitionRegistrar: 手动注册bean到容器中,需要将实现ImportBeanDefinitionRegistrar接口的类传入到import配置中

 

FactoryBean

注册工厂bean获取的是getObject创建的对象

id默认为方法名,想要获取FactoryBean本身需要在id名前面加一个&符号

 

bean生命周期

bean创建(构造函数)----初始化(initMethod)---- 销毁的过程(destroyMethod)

容器管理bean的声明周期

我们可以自定义初始化和销毁的方法:容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法

1. 指定初始化和销毁方法

@Bean(initMethod = 初始化方法, destroyMethod = 销毁方法) 

初始化:对象创建完成,并赋值号,调用初始化方法

销毁: 单实例 :ioc容器关闭的时候, 多实例:不进行销毁(不管多实例的)

2.通过让Bean实现接口(定义初始化逻辑)

InitializingBean           初始化方法的接口

DisposableBean         销毁方法接口

3. 可以使用JSR250规范的注解

@PostConstruct 在bean创建完成并且属性赋值完成,来执行初始化方法, 用于在完成依赖项注入之后

@PreDestroy      在容器销毁bean之前通知我们进行清理工作

4. BeanPostProcessor, bean的后置处理器

在bean初始化前后进行一些处理工作

postProcessBeforeInitialization: 在初始化之前(上面的初始化方法开始前调用)

postProcessAfterInitialization:在初始化之后(上面的初始化方法走完后调用)

 

@Value

1. 可以写基本的数值

2. 可以写SpEl表达式#{}

3. 可以写${}取出配置文件中的值(运行在环境变量里面的值)

 

@PropertySource

加载指定的配置文件, 只能,用于加载properties文件

 

@Autowired

默认按照类型去容器中找对应的组件

如果找到多个相同类型的组件,在将属性名作为组件的id去容器中查找

默认一定要将属性值赋值好,没有就会报错

required = false 没有值注入也不会报错

可以标注的位置为:构造器,参数,方法,属性

标注在方法上,spring容器创建当前对象就会调用方法,完成赋值

如果组件只有一个有参构造器,这个有参构造器的@Autowired可以省略,参数位置的组件还是可以自动从容器中获取

 

@Qualifier

指定需要装配的组件的id,而不是使用属性名作为id去容器中查找

 

@Primary

让spring进行装配的时候,默认使用首选的bean

自动注入时,有多个相同类型的bean,加有@Primary注解的bean会被优先注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值