Spring(四)通过注解配置Bean
一、在 classpath 中扫描组件
注意:要导入包【spring-aop-4.0.0.RELEASE.jar】
(1)组件扫描(component scanning): Spring 可以够从 classpath 下自动扫描,侦测和实例化具备特定注解的组件。
(2)特定组件包括:
@Component: 基本注解, 标识了一个受 Spring 管理的组件
@Respository: 标识持久层组件
@Service: 标识服务层(业务层)组件
@Controller: 标识体现层组件
(3)对于扫描到的组件, Spring 有默认的命名策略:用非限定类名, 第一个字母小写. 也能在注解中通过 value 属性值标识组件的名称。
(4)当在组件类上用了特定的注解之后, 还需要在 Spring 的配置文件中公告<context:component-scan>:
①、base-package 属性指定一个需要扫描的基类包,Spring 容器将会扫描这个基类包里及其子包中的所有类.?
②、当需要扫描多个包时, 能用逗号分隔.
③、假如仅希望扫描特定的类而非基包下的所有类,可用 resource-pattern 属性过滤特定的类
④、<context:include-filter>子节点表示要包含的目标类
⑤、<context:exclude-filter>子节点表示要排除在外的目标类
⑥、<context:component-scan>下能拥有若干个<context:include-filter>和<context:exclude-filter> 子节点
<context:include-filter>和<context:exclude-filter> 子节点支持多种类型的过滤表达式:

二、案例
(1)一个测试的实体类

(2)控制层类

(3)业务层类

(4)接口

(5)持久层类,这里实现了上面的接口,并且注解的value为userRespository,value能省略

(6)配置组件扫描,指定Spring IOC容器扫描的包

(7)测试一下

(8)扫描指定的类

(9)排除哪些指定表达式的类


(10)指定包含哪些表达式的组件,需要use-default-filters配合用4



(11)所有继承或者扩展UserRepository的类

测试效果跟上面一样
三、组件装配
<context:component-scan>元素还会自动注册 AutowiredAnnotationBeanPostProcessor 实例, 该实例能自动装配具备 @Autowired 和 @Resource 、@Inject注解的属性.
四、用 @Autowired 自动装配 Bean
@Autowired 注解自动装配具备兼容类型的单个 Bean属性
(1)构造器, 普通字段(即便是非 public), 一切具备参数的方法都能应使用@Authwired 注解
(2)默认情况下, 所有用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时, 会抛出异常, 若某一属性允许不被设置, 能设置 @Authwired 注解的 required 属性为 false
(3)默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 此时能在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 @Qualifiter 已指定注入 Bean 的名称
(4)@Authwired 注解也能应使用在数组类型的属性上, 此时 Spring 将会把所有匹配的 Bean 进行自动装配.
(5)@Authwired 注解也能应使用在集合属性上, 此时 Spring 读取该集合的类型信息, 而后自动装配所有与之兼容的 Bean.
(6)@Authwired 注解使用在 java.util.Map 上时, 若该 Map 的键值为 String, 那么 Spring 将自动装配与之 Map 值类型兼容的 Bean, 此时 Bean 的名称作为键值
五、案例
(1)没有加注解的情况

(2)加注解


这样的输出结果就是这样了

(3)还能加注解到set方法上

(4)





假如增加多一个类型一样的bean,就会抛出异常

假如给某个设置value值,就会根据这个来

或者者这样

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Spring(四)通过注解配置Bean