基于注解的 DI
一、7个注解
1. @Component
2. @Respotory
3. @Service
4. @Controller
5. @Value
6. @Autowired
7. @Resource
后面的文章会讲用法和解释
二、使用注解
对于 DI 使用注解,将不再需要在 Spring 配置文件中声明 bean 实例。Spring 中使用注解,需要在原有 Spring 运行环境基础上再做一些改变。
需要在 Spring 配置文件中配置组件扫描器,用于在指定的基本包中扫描注解。
2.1 使用注解的步骤
1.加入maven的依赖 spring-context ,在你加入spring-context的同时, 间接加入spring-aop的依赖。使用注解必须使用spring-aop依赖
2.在类中加入spring的注解(多个不同功能的注解)
3.在spring的配置文件中,加入一个组件扫描器的标签,说明注解在你的项目中的位置
2.2 组件扫描器
声明组件扫描器(component-scan):指定注解所在的包名
<context:component-scan base-package="com.apps.ba01" />
可以使用多个 context:component-scan 指定不同的包路径
<context:component-scan base-package="com.apps.ba02" />
也可以在使用base-package时,值使用分隔符
逗号分隔:
<context:component-scan base-package="com.apps.ba01,com.apps.ba02" />
分号分隔:
<context:component-scan base-package="com.apps.ba01;com.apps.ba02" />
分隔符可以使用逗号(,)分号(;)还可以使用空格,不建议使用空格
---------------------------------------------------------------------------------
base-package 指定到父包名
base-package 的值表是基本包,容器启动会扫描包及其子包中的注解,当然也会扫描到子包下级的子包。所以 base-package 可以指定一个父包就可以。
<context:component-scan base-package="com.apps" />
或者最顶级的父包
<context:component-scan base-package="com" />
但不建议使用顶级的父包,扫描的路径比较多,导致容器启动时间变慢。指定到目标包到合适的。也就是注解所在包全路径。例如注解的类在 com.apps.beans 包中
<context:component-scan base-package="com.app.beans" />