springboot 原型注解(Stereotype Annotations)个人解析

1.@Service @Controller @Repository这三个注解从源码上看其实都是@Component 实现的,所以本质上这三个没有什么区别。

通常地,@Service @Controller @Repository是为了给不同的类打上不同的标志来区别开各个类的作用是什么,

@Service表明是一个服务

@Controller表明是一个控制器

@Repository表明是一个仓储,说明是数据库访问模型

如果该类没有明确定义是服务、控制器、仓储,可以用@Component标明

2.@Lazy延迟实例化

@Lazy只有在该实例被用到的时候才会被实例化

@Lazy注解注解的作用主要是减少springIOC容器启动的加载时间

当出现循环依赖时,也可以添加@Lazy

需要注意的是@Lazy的延迟加载机制和依赖有关,如果没有将相关依赖也加入@Lazy,对象仍然会被立即加载

3.@Autowired

首先spring是一个约定大于配置的框架,变量的名字对于注入的对象是有影响的,如下图

其次需要注意的是接口不可以用@Component,也没有意义,提到的bean都是具体的class类

  • @Autowired优先按bytype查找并实例化,没有找到任何一个bean,会报错
  • 按bytype找到多个,会按byname找,如果仍没找到,会报错(byname查找方式可以用@Qualifier,@Qualifier声明的byname变量优先级最高)
  • 在成员变量注入和setter注入的时候必须加上@Autowired,在构造器注入的时候可以不加,直接按原来的方式写构造器把实例当参数传进去即可,spring官方推荐构造函数注入或setter注入,因为两种是对public做注入

4.@Configuration

是在spring3.0里加入的新特性,通常在写框架的时候被用到,是配置类注解,用来解决变化的问题,很重要

其中的@Bean可以将没有被声明注入的bean强行加入ioc容器中去,代码说的是将Camille类作为ISkill的实现类加入到了容器中

@Configuration具体用途:

如上图所示,name和age是不能被动态赋值的,只有通过配置类才行

@Configuration主要是用来取代xml配置方式的

更灵活地,可以用下面的方式来配置:

配置类注解主要解决:

1.成员变量的变化

2.接口实现类的变化

@Configuration本质上是基于ocp的一种编程模式,旨在把变化隔离开,统一管理

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swordbob

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值