Spring与SpringMVC注解的理解

本文详细解析Spring框架中Bean的管理方式,包括@Service、@Autowired、@Scope等注解的作用,以及context:component-scan如何配置以扫描特定组件。探讨了Spring与SpringMVC容器在bean管理上的差异及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.cnblogs.com/fightingcoding/p/component-scan.html

@Service  告诉spring容器,这是一个Service类,标识持久层Bean组件,默认情况会自动加载它到spring容器中。 
@Autowried  告诉spring,这个字段需要自动注入 
@Scope  指定此spring bean的scope是单例 (默认单例singleton,不创建新的实例)
@Repository: 注解指定此类是一个容器类,是dao层类的实现。标识持久层Bean组件 
@Componet: 基本注解,标识一个受Spring管理的Bean组件 
@Controller:  标识表现层Bean组件

context.component-scan节点

base-package属性告诉spring要扫描的包 
use-default-filters=”false”表示不要使用默认的过滤器,自己在下面指定。此处的默认过滤器,会扫描包含Service,Component,Responsitory,Controller注释修饰类。

**context:component-scan**查找注解
context:component-scan查找使用构造型(stereotype)注解所标注的类,如@Component(组件),@Service(服务),@Controller(控制器),@Repository(数据仓库)

通常情况下我们在创建spring项目的时候在xml配置文件中都会配置这个标签,配置完这个标签后,spring就会去自动扫描base-package对应的路径或者该路径的子包下面的java文件,
如果扫描到文件中带有@Service,@Component,@Repository,@Controller等这些注解的类,则把这些类注册为bean 。
注:在注解后加上例如@Component(value=”abc”)时,注册的这个类的bean的id就是adc。在别处通过abc就可以访问该类。

实例:

https://www.cnblogs.com/caoyc/p/5626365.html
https://www.cnblogs.com/exe19/p/5391712.html
https://blog.youkuaiyun.com/qwe5810658/article/details/74343228 也讲user-defaule-filter=“false”

在ssm整合时,使用注解方式对相关bean进行管理,此时出现一个问题:
spring ioc容器 和 spring mvc容器 两个容器对bean管理的问题,
一般情况下都是单单使用springmvc容器对@Controller注解标识的类进行管理,
其他的类如@Service、@Component等注解标识的类由spring来管理,
(spring mvc容器中的类可以引用spring ioc中的类,反过来则不行),

此时springMVC在配置扫描包时的配置如下:
<context:component-scan base-package=“com.ssm.user” use-default-filters=“false”>
<context:include-filter type=“annotation”
expression=“org.springframework.stereotype.Controller”/>
</context:component-scan>
以上配置指示扫描器单单扫描context:include-filter指定的类即@Controller注解指定的类,因为已经指定use-default-filters="false"不使用默认的filters,默认filters为全部的注解包括了@Controller、@Service等
https://blog.youkuaiyun.com/wwwffy/article/details/78869470

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值