最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring容器管理Jar包內(nèi)XML Bean的5種方式

 更新時間:2026年03月26日 09:44:49   作者:法拉第第  
在 Spring 項目中,Jar 包內(nèi)的 XML 配置文件默認(rèn)不會被 Spring 自動加載,需要手動指定加載路徑,讓容器掃描并管理其中的 Bean,本文給大家整理了最常用、最實(shí)用的 5種方式,需要的朋友可以參考下

在 Spring 項目中,Jar 包內(nèi)的 XML 配置文件默認(rèn)不會被 Spring 自動加載,需要手動指定加載路徑,讓容器掃描并管理其中的 Bean。

我給你整理了最常用、最實(shí)用的 5 種方式,按推薦程度排序,直接復(fù)制就能用。

方式 1:@ImportResource(最常用、最簡單)

直接在啟動類 / 配置類上注解,指定 Jar 包內(nèi) XML 的路徑。

用法

import org.springframework.context.annotation.ImportResource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
// 加載 jar 包內(nèi)的 xml,classpath*: 表示掃描所有依賴 jar 包
@ImportResource(locations = "classpath*:applicationContext-xxx.xml")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

關(guān)鍵點(diǎn)

  • classpath*: 必須加星號,才能掃描到 jar 包內(nèi)的資源
  • 支持通配符:classpath*:spring/*.xml

方式 2:applicationContext.xml中使用<import>(傳統(tǒng) XML 項目)

如果你的項目本身還是 XML 配置,直接在主 XML 里引入 Jar 包的 XML。

<!-- 主配置文件中引入 jar 包內(nèi)的 xml -->
<import resource="classpath*:service-context.xml"/>

方式 3:編程式手動加載(靈活、可控制加載時機(jī))

通過代碼手動創(chuàng)建、加載 XML 配置。

import org.springframework.context.support.ClassPathXmlApplicationContext;

// 加載 jar 包內(nèi) xml,創(chuàng)建上下文
ClassPathXmlApplicationContext context = 
    new ClassPathXmlApplicationContext("classpath*:bean-context.xml");

// 獲取 bean
YourBean bean = context.getBean(YourBean.class);

方式 4:自定義ApplicationContextInitializer(Spring Boot 高級用法)

適合需要在容器啟動早期加載 XML 的場景。

import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class XmlContextInitializer implements ApplicationContextInitializer {
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        ClassPathXmlApplicationContext xmlContext = 
            new ClassPathXmlApplicationContext("classpath*:external-beans.xml");
        
        // 將 jar 中的 bean 合并到主容器
        applicationContext.setParent(xmlContext);
    }
}

然后在 META-INF/spring.factories 注冊:

org.springframework.context.ApplicationContextInitializer=com.xxx.XmlContextInitializer

方式 5:@Configuration+BeanDefinitionReader(最底層、最靈活)

手動解析 XML,注冊 Bean。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.support.GenericApplicationContext;

@Configuration
public class XmlImportConfig {

    @Bean
    public void loadJarXml(GenericApplicationContext context) {
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
        // 加載 jar 包內(nèi) xml
        reader.loadBeanDefinitions("classpath*:dao-context.xml");
    }
}

路徑寫法必須記?。ǚ浅jP(guān)鍵)

路徑寫法作用
classpath:xxx.xml只加載當(dāng)前項目的 xml,找不到 jar 包內(nèi)
classpath*:xxx.xml加載所有 jar 包 + 當(dāng)前項目的 xml

? 一定要用 classpath*:

總結(jié)(最實(shí)用的 2 種)

  1. Spring Boot 項目首選@ImportResource("classpath*:xxx.xml")
  2. 傳統(tǒng) XML 項目<import resource="classpath*:xxx.xml"/>

這兩種覆蓋 99% 的使用場景。

以上就是Spring容器管理Jar包內(nèi)XML Bean的5種方式的詳細(xì)內(nèi)容,更多關(guān)于Spring管理Jar包內(nèi)XML Bean的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

汨罗市| 南投县| 成武县| 扎赉特旗| 天长市| 天气| 安吉县| 河源市| 新丰县| 新丰县| 禹州市| 太和县| 秀山| 临湘市| 巩义市| 新竹县| 吴堡县| 三门峡市| 桂东县| 宣武区| 浮梁县| 绥德县| 镶黄旗| 进贤县| 新蔡县| 仁化县| 西和县| 古浪县| 兴隆县| 山阳县| 金寨县| 巴林右旗| 五河县| 科技| 西盟| 辽阳市| 临江市| 襄垣县| 历史| 禹州市| 屯门区|