@Controller,@Service,@Repository,@Component详解。

@Controller

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

@Service

用来表示一个业务层bean。

@Repository

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

@Component

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

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

为了让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的定义

Filter Type

Examples Expression

Description

annotation

org.example.SomeAnnotation

符合SomeAnnoation的target class

assignable

org.example.SomeClass

指定class或interface的全名

aspectj

org.example..*Service+

AspectJ语法

regex

org\.example\.Default.*

Regelar Expression

custom

org.example.MyTypeFilter

自定义Type,实现接口org.springframework.core.type.TypeFilter

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

原文发布于微信公众号 - Java技术栈(javastack)

原文发表时间:2017-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java 技术分享

SpringMVC(二)

17430
来自专栏互联网大杂烩

Spring MVC框架

前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resol...

8420
来自专栏学海无涯

Java Web之Spring Boot

我一直在尝试一个人写demo(Android和iOS)时,如何模拟服务器端返回的 JSON 数据,总的来说,我试过以下几种: 纯Servlet开发,这种方式配合...

29340
来自专栏Java 源码分析

SpringBoot 笔记(九):分布式

18630
来自专栏JMCui

SpringMVC 与 REST.

    我敢打赌这并不是你第一次听到或读到REST这个词。当讨论REST时,有一种常见的错误就是将其视为“基于URL的Web服务”—— 将REST作为另一种类型...

10940
来自专栏一个默默无闻的工程师的日常

OpenStack SR-IOV研究

1.1K70
来自专栏菩提树下的杨过

spring cloud 学习(4) - hystrix 服务熔断处理

hystrix 是一个专用于服务熔断处理的开源项目,当依赖的服务方出现故障不可用时,hystrix有一个所谓的断路器,一但打开,就会直接拦截掉对故障服务的调用,...

22050
来自专栏技术墨客

Spring-boot特性(2) 原

在使用Spring-boot时,永远要记住它仅仅是Spring Framework的延伸(或者说整合),其底层还是基于Spring Framework(core...

28020
来自专栏木制robot技术杂谈

Python中os.path.dirname(__file__)的用法

os.path.dirname()的用途 os.path.dirname()用来获取文件的路径。 如: 1 2>>> os.path.dirname('/ho...

41970
来自专栏精讲JAVA

Spring MVC 到底是如何工作的?

这篇文章将深入探讨Spring框架的一部分——Spring Web MVC的强大功能及其内部工作原理。

10630

扫码关注云+社区

领取腾讯云代金券