框架编程-spring bean的注解区别(Service+Component+Controller+Repository)

背景

想把一个类注册成为spring的bean并且加载入容器,经常会用到四个注解Service+Component+Controller+Repository,那么这四个注解有什么区别呢?本博客将查看源码进行阐述。

四大注解

基本注解Component


@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface Component {
	String value() default ""; // value可以给bean起名字
}

只要添加注解,就会被spring的容器识别,并且加载到容器中(在不被其他的过滤条件过滤的情况下)。

此注解为基本注解,Service、Controller、Repository全部都使用了这个注解,所以都具备被加载为bean的能力。

业务标识注解Service

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Service {
	@AliasFor(annotation = Component.class)
	String value() default "";
}

可以看到,这里直接使用了Component注解,并且把value参数直接转交给了Component(类似于类的继承关系)

Controller、Repository注解

同上

个人评论

  • 如果想注册成为bean,单一个Component就够了
  • Service等注解,来自于不同的标准,在引入其他模块的时候(例如mybatis),可能会被第三方模块的反射读取,所以,当你知道bean用途的情况下,最好使用对应的类型
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值