news 2026/4/3 3:33:21

(25)选择性实例化Bean

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(25)选择性实例化Bean

假设在某个包下有很多Bean,有的Bean上标注了Component,有的标注了Controller,有的标注了Service,有的标注了Repository,现在由于某种特殊业务的需要,只允许其中所有的Controller参与Bean管理,其他的都不实例化。这应该怎么办呢?

packagecom.powernode.spring6.bean3;importorg.springframework.stereotype.Component;importorg.springframework.stereotype.Controller;importorg.springframework.stereotype.Repository;importorg.springframework.stereotype.Service;@ComponentpublicclassA{publicA(){System.out.println("A的无参数构造方法执行");}}@ControllerclassB{publicB(){System.out.println("B的无参数构造方法执行");}}@ServiceclassC{publicC(){System.out.println("C的无参数构造方法执行");}}@RepositoryclassD{publicD(){System.out.println("D的无参数构造方法执行");}}@ControllerclassE{publicE(){System.out.println("E的无参数构造方法执行");}}@ControllerclassF{publicF(){System.out.println("F的无参数构造方法执行");}}

我只想实例化bean3包下的Controller。配置文件这样写:

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scanbase-package="com.powernode.spring6.bean3"use-default-filters="false"><context:include-filtertype="annotation"expression="org.springframework.stereotype.Controller"/></context:component-scan></beans>

use-default-filters=“true” 表示:使用spring默认的规则,只要有Component、Controller、Service、Repository中的任意一个注解标注,则进行实例化。
use-default-filters=“false”表示:不再spring默认实例化规则,即使有Component、Controller、Service、Repository这些注解标注,也不再实例化。
<context:include-filter type=“annotation” expression=“org.springframework.stereotype.Controller”/> 表示只有Controller进行实例化。

@TestpublicvoidtestChoose(){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("spring-choose.xml");}

执行结
也可以将use-default-filters设置为true(不写就是true),并且采用exclude-filter方式排出哪些注解标注的Bean不参与实例化:

<context:component-scanbase-package="com.powernode.spring6.bean3"><context:exclude-filtertype="annotation"expression="org.springframework.stereotype.Repository"/><context:exclude-filtertype="annotation"expression="org.springframework.stereotype.Service"/><context:exclude-filtertype="annotation"expression="org.springframework.stereotype.Controller"/></context:component-scan>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 7:48:28

销售团队管理系统横评:除了Salesforce,国内企业还能选什么?

当CRM赛道上挤满了国际巨头和本土玩家&#xff0c;真正能融入中国销售日常场景的工具&#xff0c;正在重新定义销售管理的边界。“为什么我们花大价钱上了CRM&#xff0c;销售还是用Excel&#xff1f;” 这是许多销售总监面临的困境。市场上许多CRM项目未能达到预期效果&#x…

作者头像 李华
网站建设 2026/3/30 13:49:57

如何用SQLCipher在45分钟内构建企业级数据加密防线?

【免费下载链接】sqlcipher sqlcipher/sqlcipher: 是一个基于 MySQL 和 SQLite 数据库的加密库&#xff0c;它提供了一个加密的数据库&#xff0c;适用于多种数据库管理。适合用于数据库加密&#xff0c;特别是对于需要数据库加密的场景。特点是数据库加密、支持多种数据库、易…

作者头像 李华
网站建设 2026/3/31 17:10:43

监控告警优化策略:7大技巧让告警疲劳降低80%

监控告警优化策略&#xff1a;7大技巧让告警疲劳降低80% 【免费下载链接】orleans dotnet/orleans: Orleans是由微软研究团队创建的面向云应用和服务的分布式计算框架&#xff0c;特别适合构建虚拟 actor模型的服务端应用。Orleans通过管理actors生命周期和透明地处理网络通信&…

作者头像 李华
网站建设 2026/4/1 22:30:30

现代控制柜I/O布线的效率与可靠性挑战

随着工业自动化系统对数据采集和控制精度的要求不断提高&#xff0c;现代控制柜内的I/O模块通道密度也随之激增。高密度的接线不仅占据了宝贵的安装空间&#xff0c;更使得布线过程极其繁琐&#xff0c;极易引发连接错误和后期的维护难题。传统的“一点对一点”布线模式&#x…

作者头像 李华
网站建设 2026/4/1 2:02:59

8 个 MBA 开题报告工具,AI 写作降重推荐

8 个 MBA 开题报告工具&#xff0c;AI 写作降重推荐 论文写作的困境&#xff1a;时间、精力与重复率的三重挑战 对于MBA学生来说&#xff0c;开题报告不仅是学术生涯中的一项重要任务&#xff0c;更是对综合能力的一次全面检验。从选题构思到文献综述&#xff0c;再到内容撰写与…

作者头像 李华
网站建设 2026/3/31 19:55:55

Pascal VOC 2012数据集终极下载指南:告别龟速下载的完整解决方案

Pascal VOC 2012数据集终极下载指南&#xff1a;告别龟速下载的完整解决方案 【免费下载链接】PascalVOC2012数据集下载链接 Pascal VOC 2012 数据集是计算机视觉领域中广泛使用的基准数据集之一&#xff0c;包含了大量的图像和标注信息&#xff0c;适用于目标检测、图像分割等…

作者头像 李华