ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring @Controller,@Service,@repository,@Component注解

2021-06-29 18:01:26  阅读:145  来源: 互联网

标签:扫描 Service repository Spring Component Controller 注解


引入

在过去我们通过在xml中加入标签的形式去将类交给Spring Bean容器管理,但是当我们的组件过多的时候,我们这种标签的形式显得麻烦而又复杂。
因此我们引入了@Controller,@Service,@repository,@Component注解。
这些注解作用于类上,他的作用等价于标签。
例如:

@Controller
public class UserController {}

等价于:

<bean id="userController" class="com.study.controller.UserController"></bean>

那么@Controller,@Service,@repository,@Component有什么区别呢?

注解的区别

其实几个注解并没有太大的区别,仅仅是为了区分我们的工作不同。
@Controller 放到控制层类的头上,我相信凡是学过三层架构的应该懂我什么意思。
@Service 放到业务层的头上,
@Repository 放到数据持久层的头上,
@Component 放到一些中立的类头上,
当然也是有一点区别的:
我们知道前端控制器会有一个映射表,他会把@Controller标记的类存放进去,便于处理前端请求。

如何使用

那么我们如何让这些注解生效呢?
我通过例子来说明:
让注解生效,开启包扫描
包路径特点: 给定包路径,则自动扫描同包及子孙包中的类
base-package: 根据指定的包路径 查找注解
写方式: 多个包路径 使用,号分隔

  <context:component-scan base-package="com.study.controller,com.study.service,com.study.dao"></context:component-scan>
<context:component-scan base-package="com.study"></context:component-scan>

业务需求1: 只想扫描@controller注解
属性说明: use-default-filters=“true”
默认规则 :true 表示可以扫描其他注解
:false 按照用户指定的注解进行加载,默认规则不生效

   <context:component-scan base-package="com.jt" use-default-filters="false">
      <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Controller"/>
   </context:component-scan>

业务需求1: 不想扫描@controller注解

   <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Controller"/>
   </context:component-scan>

标签:扫描,Service,repository,Spring,Component,Controller,注解
来源: https://blog.csdn.net/m0_50210478/article/details/118340159

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有