Spring常用注解整理说明

@Configuration

作用

  • 用来定义配置类,可以替换xml配置文件
  • 被注解的类中含有一个或多个被@Bean注解的方法,这些方法会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean实例,初始化Spring容器

注意事项(@Configuration注解的类相关)

  • 该类不能是final类型
  • 该类不可以是匿名类
  • @Configuration嵌套时,嵌套的configuration必须是静态类

使用方式

  • @Configuration配置spring并启动spring容器
    配置类

    在这里插入图片描述
    编写启动类
    在这里插入图片描述
    容器启动
    在这里插入图片描述

  • @Configuration+@ComponetScan +@Componet扫描包路径,添加路径下需要创建的bean实例到Spring容器
    配置类
    在这里插入图片描述
    需要注入的类
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    启动类
    在这里插入图片描述
    运行结果
    在这里插入图片描述

  • @Configuration启动容器+@Bean注册Bean
    配置类
    在这里插入图片描述
    编写注入对象TestBean
    在这里插入图片描述
    编写启动类
    在这里插入图片描述
    测试结果
    在这里插入图片描述

@Componet @Controller @Service @Repository

  • @Componet是一个标准的spring Bean类,声明当前类的对象被spring托管,spring会创建该类的实例并存放在IOC容器中
  • @Controller @Service @Repository都是@Componet的子类
  • @Controller 标注一个控制器组件类
  • @Service 标注一个业务逻辑组件类
  • @Repository 标注一个DAO组件类
  • @Componet可以替代上述三个注解
  • 尽量使用@Controller @Service @Repository来代替@Componet,因为语义性更强,便于后续的维护和开发
  • 上述注解都有一个属性value用来声明Bean实例的id,如果不声明,则默认是该类的类名称首字母小写

@Bean @Qualifier @Scope

  • Bean注解主要用于方法上,类似于工厂方法
  • 搭配@Qualifier注解定义工厂方法的名称,完成类之间的依赖关系
  • @Scope定义了该Bean的作用域范围,是Singleton还是Prototype

@ComponentScan

  • @ComponetScan会自动扫描声明的包路径,创建路径下需要创建的实例Componet,Controller,Service,Repository到Spring容器中

@Autowired @Resource

相同点

  • @Resource相当于@Autowired,均完成了自动装配,注入Bean实例到Spring容器中
  • 均可标注在字段或属性的setter方法上

不同点

  • 提供方:
    @Autowired是由Spring提供的
    @Resource是由J2EE提供的,需要JDK1.6及以上

  • 注入方式
    @Autowired只按照类型注入,如果想要其按照id装配,需配合@Qualifier使用
    @Resource默认按id自动装配,也提供按照类型注入

  • 属性
    @Autowired按类型装配依赖对象,默认情况下,要求依赖对象必须存在,如果允许null值,可以设置属性required为false
    @Resource有两个重要属性:name和type
    name属性指定id,如果没有指定name属性,当注解标注在字段上时,默认取字段的名称作为Bean id寻找依赖对象,当注解标注在属性的setter方法上时,默认取属性名作为Bean id寻找依赖对象

@Resource的注意事项
Resource如果没有指定name属性,并且按照默认的名称无法找到依赖对象时。@Resource注解会回退到按类型装配

推荐使用@Resource注解在字段上,这样就不用写setter方法了,并且这个注解时属于J2EE的,减少了与Spring的耦合,这样代码比较 优雅(被优雅支配的程序员,不得不给优雅标红)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值