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

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

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

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

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

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

直接在啟動(dòng)類(lèi) / 配置類(lèi)上注解,指定 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*: 表示掃描所有依賴(lài) 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*: 必須加星號(hào),才能掃描到 jar 包內(nèi)的資源
  • 支持通配符:classpath*:spring/*.xml

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

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

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

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

通過(guò)代碼手動(dòng)創(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 高級(jí)用法)

適合需要在容器啟動(dòng)早期加載 XML 的場(chǎng)景。

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 注冊(cè):

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

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

手動(dòng)解析 XML,注冊(cè) 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");
    }
}

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

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

? 一定要用 classpath*:

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

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

這兩種覆蓋 99% 的使用場(chǎng)景。

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

相關(guān)文章

最新評(píng)論

乌兰县| 绥阳县| 都江堰市| 永嘉县| 孝昌县| 绥棱县| 洛扎县| 阿克陶县| 孟州市| 祁连县| 东丰县| 卓尼县| 锡林郭勒盟| 赤水市| 田阳县| 新宾| 绍兴县| 隆昌县| 临海市| 远安县| 从化市| 甘洛县| 宾阳县| 新津县| 武义县| 微博| 印江| 斗六市| 达尔| 贺州市| 香港| 阳春市| 中牟县| 灵宝市| 衢州市| 兴文县| 磴口县| 阜康市| 东方市| 泊头市| 巧家县|