Spring中的注解@Repository、@Service、@Controller、@Component

从Spring3.0开始,Spring JavaConfig项目提供了很多特性,包括使用java而不是XML定义bean,比如@Configuration,@Bean,@Import,@DenpendsOn

在目前的 Spring 版本中,@Repository、@Service、@Controller这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。

用注解来向Spring容器注册Bean
如:在base-package指明一个包,指自动扫描该包(com包)下面的所有注解
在这里插入图片描述
1.@Component
泛指组件,是所有受Spring 管理组件的通用形式,当组件不好归类的时候,我们可以使用这个注解进行标注。
即:通用注解,可用于任何bean。

2.@Service
通常用于注解Service类,即服务层

@Service(“userService”)注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService"

3.@Controller
用于标注控制层组件(如struts中的action)

使用@Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为"userAction"的action,这个名字是根据UserAction类名来取的。注意:如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value【@Controller(value=“UserAction”)】或者【@Controller(“UserAction”)】,则使用value作为bean的名字。

这里的UserAction还使用了@Scope注解,@Scope(“prototype”)表示将Action的范围声明为原型,可以利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题。spring 默认scope 是单例模式(scope=“singleton”),这样只会创建一个Action对象,每次访问都是同一Action对象,数据不安全,struts2 是要求每次次访问都对应不同的Action,scope=“prototype” 可以保证当有请求的时候都创建一个Action对象

4.@Repository
通常用于注解Dao类,即持久层。
用于标注数据访问组件,对应表现层的Bean,即DAO组件,

参考原文:
https://www.cnblogs.com/lxcmyf/p/5674399.html

猜你喜欢

转载自blog.csdn.net/weixin_44000004/article/details/87970931