一. 注解简介
1、什么是注解
(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值…)
(2)使用注解,注解作用在类上面,方法上面,属性上面
(3)使用注解目的:简化 xml 配置
2、Spring 针对 Bean 管理中创建对象提供注解
(1)@Component:一种普适的注解,可以用来创建任何对象
(2)@Service :一般用于业务逻辑层或者service层
(3)@Controller:一般同于Web层
(4)@Repository :一般用于DAO层
上面四个注解功能是一样的,都可以用来创建 bean实例
- 注意,注解需要导入下图的aop包
二. 如何使用注解?一个例子
(1)引入依赖
(2)开启组件扫描
- 引入名称空间:
- 开启组件扫描
(3) 创建类,在类上面添加注解
-
在被调用的类上面添加注解@Component(value = “userService”),其中value相当于XML中的id属性
-
测试注解是否成功,注意一定要把bean1.xml读取进来,因为在bean1.xml中开启了组件扫描
4、开启组件扫描细节配置
<!--示例1 use-default-filters="false" 表示现在不使用默认filter,自己配置filter context:include-filter,设置扫描哪些内容-->
<context:component-scan base-package="com.atguigu" use-defaultfilters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
<!--示例2 下面配置扫描包所有内容 context:exclude-filter: 设置哪些内容不进行扫描-->
<context:component-scan base-package="com.atguigu">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
三. 基于注解方式实现属性注入
(1)@Autowired:根据属性类型进行自动装配
- 由于自动装配,所以没有value属性,只是根据类型自动装配
- 第一步 把 service 和 dao对象创建,在 service 和 dao类添加创建对象注解
- 第二步 在 service 注入 dao 对象,在 service 类添加 dao类型属性,在属性上面使用注解
@Autowired会自动根据UserDaoImpl类型进行装配
(2)@Qualifier:根据名称进行注入
和上面@Autowired 一起使用,Javax包中的
(3)@Resource:可以根据类型注入,可以根据名称注入
//@Resource //根据类型进行注入
@Resource(name = "userDaoImpl1") //根据名称进行注入
private UserDao userDao;
(4)@Value注入普通类型属性
- 在普通类型属性前使用
四. 完全注解开发
在之前我们使用XML文件来开启组件扫描,但是可以用注解的方式来完成这个扫描过程,从而完全使用XML。
(1)创建配置类,替代 xml 配置文件
@Configuration //作为配置类,替代XML
@ComponentScan(basePackages = {
"com.LinXiaoDe.spring5"})
public class SpringConfig {
}
(2)编写测试类,使用AnnotationConfigApplicationContext(SpringConfig.class)
加载配置类
在SpringBoot中使用,简化开发