2.10@Repository、@Service和@Controller

戴着假发的程序员出品  抖音ID:戴着假发的程序员  欢迎关注

[查看视频教程]

这三个注解是我们在开发中经常用到的注解,我们来看看这些注解的源码。

 1 package org.springframework.stereotype;
 2 
 3 @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
 4 @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
 5 @java.lang.annotation.Documented
 6 @org.springframework.stereotype.Component
 7 public @interface Repository {
 8     @org.springframework.core.annotation.AliasFor(annotation = org.springframework.stereotype.Component.class)
 9     java.lang.String value() default "";
10 }
 1 package org.springframework.stereotype;
 2 
 3 @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
 4 @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
 5 @java.lang.annotation.Documented
 6 @org.springframework.stereotype.Component
 7 public @interface Service {
 8     @org.springframework.core.annotation.AliasFor(annotation = org.springframework.stereotype.Component.class)
 9     java.lang.String value() default "";
10 }
 1 package org.springframework.stereotype;
 2 
 3 @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
 4 @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
 5 @java.lang.annotation.Documented
 6 @org.springframework.stereotype.Component
 7 public @interface Controller {
 8     @org.springframework.core.annotation.AliasFor(annotation = org.springframework.stereotype.Component.class)
 9     java.lang.String value() default "";
10 }

通过查看源码,我发现这三个注解都“继承”自@org.springframework.stereotype.Component。而且各自都没有特殊的扩展和属性。 所以这三个注解的功能和@Component完全相同。 既然完全相同为什么要出现这三个注解呢?

主要是为了提高我们代码的可读性。 我们都知道在实际开发中我们都是通过包扫描和注解的方式完成bean注册。

那么为了方便我们标记各种bean的不同种类就有了这三个注解。

@Repository : 一般都是用来标记数据持久化的类。

@Service:一般都是用来标记业务处理的类。

@Controller:一般都是用来标记后端控制器的类(参照web模块)。

当然其实这四个注解是可以互换的。

posted @ 2020-10-09 08:01  戴着假发的程序员0-1  阅读(275)  评论(0编辑  收藏  举报