最近有時間 回顧一下2年前用這個Springboot的點點滴滴 Springboot Bean 配置
在使用spring 進行開發配置的時候有兩類選擇 *.xml 配置檔案、配置的Bean( @Configure ) ,於是在Springboot的開發世界裡面,為了繼續崇尚所謂的 “零配置” 提供有一種簡單的支援,也就是說如果現在你真的有配置需要通過*.xml 檔案編寫 但是又不想出現配置檔案的話,這個時候最簡單的做法就是使用Bean的方式來進行類的配置
前提 該配置程式的Bean 所在的包必須是程式啟動類所在包的子包之中,這樣才可以自動掃描到
下面看一下這份程式碼
1.0 定義一個業務介面
package com.fabu.demo3.service;
public interface ITask {
public String info();
}
2.0 定義實現這個業務介面的類
package com.fabu.demo3.service.impl; import com.fabu.demo3.service.ITask; import org.springframework.stereotype.Service; @Service public class ITaskImpl implements ITask { @Override public String info() { return "ZW"; } }
3.0 寫一個 controller 類
package com.fabu.demo3.controller; import com.fabu.demo3.service.ITask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/") public class MessageTaskController { @Autowired private ITask iTask; @RequestMapping("/info") public String info(){ return iTask.info(); } }
4.0 啟動類如下
package com.fabu.demo3;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
/****
* 啟動類
*/
@SpringBootApplication
public class Demo3Application {
public static void main(String[] args) {
SpringApplication.run(Demo3Application.class, args);
}
}
然後程式碼目錄就是這樣
編寫測試類
package com.fabu.demo3;
import com.fabu.demo3.controller.MessageTaskController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
@SpringBootTest
@RunWith(SpringRunner.class)
@WebAppConfiguration
public class TestMessageTaskController {
@Autowired
private MessageTaskController messageTaskController;
@Test
public void testInfo(){
System.out.println(" 測試類 "+messageTaskController.info());
}
}
檢視結果
利用以上的程式來了解一下 什麼叫做Bean配置 為了清楚發現Bean的特點刪除業務層的@Service 註解 那麼現在這個物件是無法直接被注入的,於是在所有包的子包裡面建議一個config包 裡面寫了一個配置程式類
package com.fabu.demo3.config;
import com.fabu.demo3.service.ITask;
import com.fabu.demo3.service.impl.ITaskImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration //此處為配置向
public class ITaskImplConfig {
/****
* 此處返回的是一個Spring 的配置Bean 與xml 的Bean 等價
* @return
*/
@Bean
public ITaskImpl getITaskImpl(){ //方法名 可以隨意寫
return new ITaskImpl();
}
}
結構目錄為
測試執行 結果為
此時採用了自動掃描Bean 的模式來進行了相關物件的配置。
如果不是新專案 本來你老專案就有一個非常完善的xml配置檔案出現了,那麼難道還需要將整個xml換成Bean配置嗎? 那麼這樣代價太大了,所以springboot 也支援這種xml配置 。
只需要在你啟動類上加上@ImportResource(locations ={"spring xml配置檔案.xml","spring xml配置檔案.xml",}
程式碼如下
package com.fabu.demo3;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
/****
* 啟動類
*/
@SpringBootApplication
@ImportResource(locations ={"spring xml配置檔案.xml","spring xml配置檔案.xml",} )
public class Demo3Application {
public static void main(String[] args) {
SpringApplication.run(Demo3Application.class, args);
}
}
喜歡的麻煩 githua 上點個小星星
githua 程式碼如下 https://github.com/zhouwei520/Springboot/tree/master/demo3