@Controller,@Service,@Repository,@Component你搞懂了吗?

简介: @Controller用来表示一个web控制层bean,如SpringMvc中的控制器。@Service用来表示一个业务层bean。@Repository用来表示一个持久层bean,即数据访问层DAO组件。@Component用来表示一个平常的普通组件,当一个类不合适用以上的注解定义时用这个组件修饰。需要注意的是@Controller,@Service,@Repository都有带@Component父注解,说明它们除了基本组件的属性外还有其他的的场景应用,即如果不用SpringMVC其实它们就是一个普通的组件,但普通组件建议最好还是用@Component修

@Controller


用来表示一个web控制层bean,如SpringMvc中的控制器。


@Service


用来表示一个业务层bean。


@Repository


用来表示一个持久层bean,即数据访问层DAO组件。


@Component


用来表示一个平常的普通组件,当一个类不合适用以上的注解定义时用这个组件修饰。

image.png

需要注意的是@Controller,@Service,@Repository都有带@Component父注解,说明它们除了基本组件的属性外还有其他的的场景应用,即如果不用SpringMVC其实它们就是一个普通的组件,但普通组件建议最好还是用@Component修饰。

image.png

为了让Spring自动扫描注册这些组件,需要在配置文件中加上扫描的配置,如扫描com.test包下的注解。

<context:component-scan base-package="com.test" />

些扫描配置默认use-default-filters="true",默认扫描@Component注解及子注解,可以配置过滤只扫描哪些注解不扫描哪些注解。

要过滤扫描注解,需要相应的带上下面的子标签,可以有多个。

context:include-filter>
<context:exclude-filter

如只扫描com.test包下的@Controller和@Service注解的组件。

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

关于type的定义

image.png

另外,context:component-scan配置可以有多个。


相关文章
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的社区智慧养老监护管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的社区智慧养老监护管理平台的详细设计和实现(源码+lw+部署文档+讲解等)
383 4
|
前端开发 Java 测试技术
基于Spring boot的图书馆图书借阅管理系统的设计与实现
基于Spring boot的图书馆图书借阅管理系统的设计与实现
3986 0
|
存储 开发工具 git
Vscode 拉取代码时出现 在签出前 请先清理仓库工作树
Vscode 拉取代码时出现 在签出前 请先清理仓库工作树
2390 0
|
前端开发 数据安全/隐私保护
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
445 0
|
5月前
|
存储 安全 vr&ar
AR眼镜石油化工巡检:让设备说话,让巡检更靠谱
在石油化工巡检中,AR眼镜方案通过直观技术辅助人工判断,提升巡检效率与准确性,保障作业安全。结合工业级硬件与智能功能,助力巡检人员高效完成任务。
|
IDE Java Maven
【项目问题解决】SpringBoot错误: 找不到或无法加载主类
SpringBoot应用启动时若出现“找不到或无法加载主类”错误,常见原因包括配置问题、编译问题或IDE设置不当。解决方法包括:检查`application.properties`配置,执行`maven clean install`,删除`.idea`文件后重导入IDEA,确保启动类路径正确,清理并重新编译项目,检查项目配置、依赖项及IDEA配置。参考CSDN和知乎相关文章。
8609 0
|
Linux 视频直播
FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
本文介绍了如何使用EasyPusher-Android实现RTSP直播流程。首先对比了RTSP、RTMP、SRT和RIST四种流媒体协议,并以RTSP为例,详细说明了使用EasyPusher-Android向流媒体服务器进行RTSP直播推流的方法。文中还提供了OBS Studio配置RTSP插件及ZLMediaKit云服务器部署的相关信息,通过修改EasyPusher-Android源码使其支持通用RTSP地址,最终验证了直播功能的成功实现。
536 0
FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
|
存储 监控 关系型数据库
监控 PostgreSQL 的性能指标
监控 PostgreSQL 的性能指标
684 3
|
Docker 容器
如何利用docker来部署war包项目
本文介绍了如何使用Docker来部署WAR包项目,包括编写Dockerfile和docker-compose.yml文件,以及如何通过Docker Compose启动服务。
490 0