前情提要
雖然SpringBoot的理念就是零配置編程,但是有時候也會出現絕對需要使用XML進行配置的情況,SpringBoot也同樣提供了手動加載XML配置中的bean的方法,下面就來簡單的介紹一下
在SpringBoot中簡單的使用XML配置Bean
首先新建兩個包,org.test1和org.test2,在org.test2包下創建一個Service,代碼如下:
package test2;
import org.springframework.stereotype.Service;
/**
* 使用XML進行配置的Service
* @author chengxi
*/
@Service
public class HelloService {
public HelloService(){
System.out.println("使用XML進行配置的Service");
}
}
然後在org.test1包下創建啓動類,代碼如下:
package org.test1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
/**
* 啓動類測試
* @author chengxi
*/
@SpringBootApplication
public class Main {
@Autowired
private HelloService helloService;
public static void main(String[] args){
SpringApplication.run(Main.class, args);
}
}
這個時候我們可以看到,如果不進行任何配置,在啓動Main之後是無法訪問到Service的,我們可以採用前面所說的改變自動掃描的包,在這裏,我們使用XML進行配置,首先創建一個XML配置文件:
//classpath:personal.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd">
<bean id="helloService" class="org.test2.HelloService">
</bean>
</beans>
在創建了XML配置文件配置好了bean之後,此時還是無法訪問Service的,因爲SpringApplication不會自動掃描並解析XML,所以還需要創建一個配置類,代碼如下:
package org.test1;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
/**
* ImportResource引入資源文件有三種方式:
* 1.直接引入,該路徑就是src/resources/下面的文件:file
* 2.classpath引入:該路徑就是src/java下面的配置文件:classpath:file
* 3.引入本地文件:該路徑是一種絕對路徑:file:D://....
*/
@ImportResource(locations = {"personal.xml"})
public class ConfigClass {
}
這裏需要注意的是,上面的配置類一定要是啓動類能夠掃描的到的,否則就沒有用。現在run啓動類,將會在控制檯中輸出HelloService構造器中的內容,表示此時成功完成該Service的XML注入