Sring Ioc 配置使用大全(基于注解)

本文详细介绍了Spring IoC容器中注解的使用,包括包扫描、类的注解加入容器、属性注入默认值及@Autowired的自动装配。重点讨论了@ComponentScan、@Value、@Autowired的工作原理和配置方式,以及如何解决自动装配时的多个候选bean问题。
摘要由CSDN通过智能技术生成

Sping 2.5的时候,还是不能抛弃主配置的xml文件的。很多基本的属性配置还是需要写在这个主配置文件中。

包扫描

    即告诉spring 要去扫描哪些包下面类中的注解。如过某个类不在扫描范围了,就是配置了注解也不会被加载到spring容器中。

 

设置扫描表的方式,在spring主配置文件中配置:Context:component-scan, 同时导入context命名空间

<context:component-san base-package =”cn.tulingxueyan” >

<context:exclude-filter type=”” expression= “”

<context:include-filter type=”” expression= “”

</context:component >

Type的5种类型:即有五种方式来定义哪些包需要被扫描, 一般就Annotation和Assignable用得比较多。

  • Annotation 根据注解的名字包含或排除

  • Assignable 根据类的完整性名字:

其他三种:

  • aspecj 根据切面表达式描述哪些包需要被扫描到或不被书扫描的。
  • regex 根据正则表达式描述哪些包需要被扫描到或不被书扫描的。
  • custom 根据自定义类MyTypeFilter来定义哪些包需要被扫描到或不被书扫描的。

所以如何将一个bean用注解的方式加入到容器。

1. 将该类所在的包包含在以上包扫描的路径下。

2. 在对应的类名上加注解。

如何为类属性注入默认值:

即用 @value为属性赋值

 1. Hardcode为属性赋值.

@Value("admin")

private String name;

2. 用${}为属性赋外部属性文件中的值, 步骤如下:

1). Class 文件中加入@value注解

2). 添加一个配置文件到resources文件夹下。

3).  在主配置文件中添加配置资源文件路径

 

3. 用#{} Spel为属性赋值,引用其他类的属性值.

1)被引用的类已经有默认值了。

2)在属性上通过@value的SEel语句应用类中属性的值。

自动装配 @Autowired

@Autowired 加在属性上面

只要在你要装配的属性上面加上这个注解,就会自动在容器中匹配合适的值为该属性赋上默认值。

匹配规则:

  1. 首先根据类型去匹配
  2. 类型匹配多个的时候,在根据名字取匹配。这是如果名字匹配失败,就会报错。

当名字不匹配是可以通过以下方式解决:

1. 直接修改属性名字。

2. 在bean的设置名字。

@Component(“userService”),

@Service(“userService”)

3. 用Qualifier(“userServiceImpl”),设置属性名字。

4. 使用@Primary来设置主自动注入bean。当有多个同一类型的bean存在多个时,优先选择该bean而不是报错。

5. 当存在多个同一类型,但是有泛型限定符不一样的情况,会自动根据泛型限定中匹配的进行匹配。

 

Autowired 也可以住在方法上面,意思是把参数当中一个属性。就和前面用法一样。

和属性上的自动装配一样,首先安装参数的类型匹配,然后安装参数的名字匹配。

 

@DependsOn()控制bean的加载顺序, 即人为为bean设置dependency关系。默认spring会自己找出bean的依赖关系。

@Lazy,用到的时候才会加载实例化该bean。

@Scope 作用域

默认是单例。

生命周期回调的三种方式:

销毁回调:

初始化回调:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值