1. 程式人生 > >最近有時間 回顧一下2年前用這個Springboot的點點滴滴 Springboot Bean 配置

最近有時間 回顧一下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