Spring注解编程

@Configuration
声明在类上面,表示把这个类作为IoC容器
@ComponentScan
声明在启动类上,该注解默认会扫描该类所在包及所有子类包中所有配置类,或手动在参数中添加扫描路径
@Scope
指定bean作用域,应用于方法上,默认是单例:prototype:原型,多例;singleton:单例;request:主要用于web模块,同一次请求只创建一个实例;session:主要应用于web模块,同一个session只创建一个对象
@Lazy
表示延迟初始化,调用getBean时才创建对象,bean默认非延迟
@Conditional
Spring4开始提供的。作用是根据条件进行判断满足条件才注册bean;在bean上添加@Conditional注解,参数里写自己实现的判断类名.class,创建判断类,实现Condition接口,实现matches方法,返回true代表加载bean。
事例根据操作系统判断是否加载bean

在这里插入图片描述
@Import
导入外部资源(手动加载第三方资源到ioc容器中 ),直接在方法参数中添加需要加入的class就可以了

在这里插入图片描述

自定义规则,实现ImportSelector接口,实现selectImports方法

在这里插入图片描述

在这里插入图片描述
实现ImportBeanDefinitionRegitrar接口,实现reciterBeanDefinitions接口直接把对象塞到ioc中

在这里插入图片描述

且当类存在时才加载,不存在时不加载也不报错

实现FactoryBean加载到IOC
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Bean的初始化及销毁自定义

  1. 使用注解
    @PostContruct用于指定初始化方法
    @PreDestory用于指定销毁方法
    @DependsOn定义bean初始化及销毁时顺序
  2. 实现InitializingBean,DisposableBean来实现初始化bean及销毁方法
  3. 实现BeanPostProcessor接口,覆盖接口中的两个方法

通用注解

在这里插入图片描述
详细:
@value的写法

在这里插入图片描述
@PropertySource写法

在这里插入图片描述
@Qualifier
Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的;
扩展:@Qualifier加在注解上
上面的例子中,可以看到是使用@Qualifier()中value的参数来筛选bean的,给此参数起个名字,叫做修饰语。修饰语是字符串类型,可以设置各种值。
如果一个工程的修饰语种类特别多,或者修饰语语义之间有继承等类似复杂关系,或者需要用多个修饰语修饰同一个bean,那用这种直接的方式就不太好操作了。修饰语value字符串容易拼错,容易混淆,更不容易被编辑器检测出来,调试bug困难。
因此可以自定义一个新的注解,使用@Qualifier修饰,制作自己的修饰语注解

@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier("Asian")         //使用@Qualifier自定义修饰注解Asian
public @interface Asian{ ... }
 
···············
 
//定义亚洲人
@Asian          //使用我们自定义的修饰注解
@Component
public class AsianMan extends Person {
 
}

注入

public class Controller {
 
    @Asian       //指定注入的是Asain的bean
    @Autowired
    private Person person;
 
}

这种自定义注解数量不受限,便于统一管理,编辑器还能识别,因此推荐用这种方法来完成修饰与指定注入。

@Primary 在一个接口类有多个实现时,在类上添加这个注解,注入时首先注入添加该注解的类,如果不添加,通过类获取bean时会报错
@ReSource 通过名字注入bean,和@Autowired配合使用

织入组件

ApplicationContextAware
可以通过这个上下文环境对象得到spring容器中的bean
BeanDefinitionRegistryPostProcessor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值