關(guān)于ApplicationContext的三個常用實現(xiàn)類
ApplicationContext的三個常用實現(xiàn)類


FileSystemXmlApplicationContext:可以加載磁盤路徑下的配置文件(不常用)
public class Client {
public static void main(String[] args) {
ApplicationContext context =
new FileSystemXmlApplicationContext("C:\\Users\\ghh\\Desktop\\bean.xml");
AccountService service = context.getBean("accountService", AccountService.class);
AccountDao accountDao = context.getBean("accountDao", AccountDao.class);
System.out.println(service);
System.out.println(accountDao);
}
}
ClassPathXmlApplicationContext:可以加載類路徑下的配置文件
要求配置文件必須在類路徑下面
public class Client {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
AccountService service = context.getBean("accountService", AccountService.class);
AccountDao accountDao = context.getBean("accountDao", AccountDao.class);
System.out.println(service);
System.out.println(accountDao);
}
}
AnnotationConfigApplicationContext:讀取注解創(chuàng)建容器
applicationContext=null的問題
問題
要對一個公共模塊項目,進(jìn)行一個拆分,做一個細(xì)化。
調(diào)整的時候,調(diào)整了啟單類的位置(并未注意到),單元測試的時候,就報錯。
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringUtils.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
public static <T> T getBean(Class<T> requiredType) {
return applicationContext.getBean(requiredType);
}
}setApplicationContext 調(diào)試的時候,方法沒進(jìn)去。說明bean沒有初始化。
處理1:檢查目錄
啟動類要在頂層的位置,這樣才會讀整個,就不用設(shè)置@ComponentScan
處理2:設(shè)置@ComponentScan
指定具體讀取的路徑
@ComponentScan(basePackages = {"com.basic.common"})
public class BasicCommonApplication {
public static void main(String[] args) {
SpringApplication.run(BasicCommonApplication.class, args);
}
@Bean
public DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean() {
return new DozerBeanMapperFactoryBean();
}
}心得:
如果在單個項目中,啟動類需要在頂層的位置,才不用設(shè)置@ComponentScan,否則需要進(jìn)行設(shè)置,才能讀取得到。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JAVA 泛型與通配符詳解從原理到實戰(zhàn)應(yīng)用
本章全面介紹了泛型的核心概念、設(shè)計初衷及三大使用方式(泛型類、泛型接口、泛型方法),重點講解了泛型的擦除機(jī)制和通配符的靈活運用,強(qiáng)調(diào)了泛型在編譯期類型安全和運行時類型擦除的優(yōu)勢,感興趣的朋友跟隨小編一起看看吧2026-03-03
Spring中三種常見Bean的初始化參數(shù)機(jī)制你了解嗎
在Spring框架中,Bean的實例化與初始化是一個復(fù)雜的過程,本文我們主要來聊一聊它的常見的三種機(jī)制:InitializingBean接口、BeanDefinitionRegistryPostProcessor接口和EnvironmentAware接口,感興趣的小伙伴可以了解下2023-11-11
java8如何通過poi+text將word轉(zhuǎn)為pdf
這篇文章主要介紹了java8如何通過poi+text將word轉(zhuǎn)為pdf問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
Java Servlet簡單實例分享(文件上傳下載demo)
下面小編就為大家?guī)硪黄狫ava Servlet簡單實例分享(文件上傳下載demo)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05

