java - 只启动 applicationcontext 中所有 bean 的一个子集

标签 java spring

我们有一个设置,其中 ApplicationContext 定义了很多 bean,但根据情况,只需要启动这些 bean 的一个子集(我所说的启动是指生命周期回调和 start() 方法)。

基本上,我想做的是在单个 bean 上调用“启动”,并让该 bean 的所有依赖项以常规 bean 启动顺序启动,除此之外别无其他。

有这样的现有代码吗?如果没有,什么是实现此目的的好方法?

最佳答案

我通常将 bean 配置拆分成单独的文件,然后只导入包含必要 bean 的文件。如果可以避免循环依赖,则可以将文件相互导入。例如,您可以像这样定义一个 service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <description>Service and lower layer beans.</description>

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

    <import resource="dao.xml" />

</beans>

由于 dao.xml 不应该依赖于 service.xml,如果您只需要 dao bean,您可以只导入该文件,而不会加载任何服务 bean。

关于java - 只启动 applicationcontext 中所有 bean 的一个子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5802699/

相关文章:

java - hbase 扫描仪 .next() 返回 null

java - Bug 跟踪应用程序的 OOPS 数据库设计帮助

spring - Spring oauth2 token 请求中未实际使用的基本身份验证过滤器和身份验证入口点

java - 使用带有基本身份验证和自定义 header 的 Spring RestTemplate 发送 PDF 附件

java - 删除依赖项后无法执行目标 org.openjfx :javafx-maven-plugin:0. 0.1:run (default-cli)

java - 有没有一种快速的方法可以将 Java xml 对象转换为 Scala xml 对象?

java - JPanel 类未添加到 JFrame

java - 如何使用Spring Data Mongodb仅检索文档的特定字段?

java - 如何在 neo4j 中使用条件匹配

java - 在 Cucumber-jvm 中使用多个步骤定义时出现 NullPointerException