基于注解的ICO Bean管理

一. 注解简介

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中使用,简化开发

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/107306107