Spring注解解析之@ImportResource
一、ImportResource
1.1 定義包和類(lèi)
首先定義一個(gè)不會(huì)被ComponentScan
掃描到的包outpackage
,如下:
在該包內(nèi)創(chuàng)建一個(gè)類(lèi):
package outpackage; import org.springframework.stereotype.Service; @Service public class HelloService1 { public void method1() { System.out.println("class:HelloService1__method:method1"); } }
1.2 定義配置文件
在資源目錄添加配置文件applicationContext.xml
:
<beans xmlns="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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 開(kāi)啟注解模式 --> <context:annotation-config/> <!-- 基于注解自動(dòng)注冊(cè)spring bean --> <context:component-scan base-package="outpackage"/> </beans>
1.3 定義Java Config類(lèi)
在啟動(dòng)類(lèi)平級(jí)目錄或者是子目錄添加java config類(lèi)保證能夠被springboot掃描到
,引入xml配置,如下:
package dongshi.daddy; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @Configuration @ImportResource({"classpath:applicationContext.xml"}) public class OuterPackageConfiguration { }
1.4 測(cè)試代碼
@SpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args) throws URISyntaxException, IOException { ConfigurableApplicationContext run = SpringApplication.run(HelloWorldMainApplication.class, args); // 獲取通過(guò)配置文件定義而被掃描到的類(lèi) HelloService1 bean = run.getBean(HelloService1.class); System.out.println(bean); } }
二、運(yùn)行
2021-05-19 17:52:52.896 INFO 16232 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8083 (http) with context path ''
...snip...
outpackage.HelloService1@1929425f
為了證明確實(shí)是xml配置文件在起作用,而不是springboot自己掃描注冊(cè),修改配置類(lèi),注釋掉@ImportResource({"classpath:applicationContext.xml"})
,如下:
package dongshi.daddy; import org.springframework.context.annotation.Configuration; @Configuration //@ImportResource({"classpath:applicationContext.xml"}) public class OuterPackageConfiguration { }
然后運(yùn)行:
2021-05-19 18:01:10.522 INFO 18260 --- [ main] dongshi.daddy.HelloWorldMainApplication : Started HelloWorldMainApplication in 0.944 seconds (JVM running for 1.355)
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'outpackage.HelloService1' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1123)
at dongshi.daddy.HelloWorldMainApplication.main(HelloWorldMainApplication.java:16)
可以看到就找不到對(duì)應(yīng)的bean了。
到此這篇關(guān)于Spring注解解析之@ImportResource的文章就介紹到這了,更多相關(guān)@ImportResource注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
seata-1.4.0安裝及在springcloud中使用詳解
這篇文章主要介紹了seata-1.4.0安裝及在springcloud中使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12如何在 Java 中利用 redis 實(shí)現(xiàn) LBS 服務(wù)
基于位置的服務(wù),是指通過(guò)電信移動(dòng)運(yùn)營(yíng)商的無(wú)線電通訊網(wǎng)絡(luò)或外部定位方式,獲取移動(dòng)終端用戶(hù)的位置信息,在GIS平臺(tái)的支持下,為用戶(hù)提供相應(yīng)服務(wù)的一種增值業(yè)務(wù)。下面我們來(lái)一起學(xué)習(xí)一下吧2019-06-06springboot cloud使用eureka整合分布式事務(wù)組件Seata 的方法
這篇文章主要介紹了springboot cloud使用eureka整合分布式事務(wù)組件Seata 的方法 ,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05SpringBoot結(jié)合dev-tool實(shí)現(xiàn)IDEA項(xiàng)目熱部署的流程步驟
這篇文章主要給大家介紹了SpringBoot結(jié)合dev-tool實(shí)現(xiàn)IDEA項(xiàng)目熱部署的流程步驟,文章通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)有一定的幫助,需要的朋友可以參考下2023-10-10Java使用flyway實(shí)現(xiàn)腳本自動(dòng)化的方法詳解
Flyway是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)版本控制工具,主要用于管理數(shù)據(jù)庫(kù)的版本和變更,它可以自動(dòng)化地將數(shù)據(jù)庫(kù)遷移到不同的版本,同時(shí)支持多種數(shù)據(jù)庫(kù)類(lèi)型,本文給大家介紹了如何使用flyway實(shí)現(xiàn)腳本自動(dòng)化,需要的朋友可以參考下2023-10-10關(guān)于Http持久連接和HttpClient連接池的深入理解
眾所周知,httpclient是java開(kāi)發(fā)中非常常見(jiàn)的一種訪問(wèn)網(wǎng)絡(luò)資源的方式了,下面這篇文章主要給大家介紹了關(guān)于Http持久連接和HttpClient連接池的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05SpringBoot使用knife4j進(jìn)行在線接口調(diào)試
這篇文章主要介紹了SpringBoot使用knife4j進(jìn)行在線接口調(diào)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09java 實(shí)現(xiàn)音樂(lè)播放器的簡(jiǎn)單實(shí)例
這篇文章主要介紹了java 實(shí)現(xiàn)音樂(lè)播放器的簡(jiǎn)單實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09Java中的System類(lèi)、BigInteger類(lèi)和BigDecimal類(lèi)詳解
這篇文章主要介紹了Java中的System類(lèi)、BigInteger類(lèi)和BigDecimal類(lèi)詳解,arraycopy()方法,復(fù)制數(shù)組元素,比較適合底層調(diào)用,一般使用Arrays.copyOf()完成復(fù)制數(shù)組,需要的朋友可以參考下2023-09-09