當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot Bean配置
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot Bean配置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在使用Spring進行開發配置的時候有兩類選擇:*.xml配置文件、配置的Bean(@Configure),于是在Spring開發
的世界里面,為了繼續崇尚所謂的"零配置",提供有一種簡單的支持,也就是說如果現在你真的有配置需要通過
*.xml文件編寫,但是又不想出現配置文件的話.前提:該配置程序的Bean所在的包必須是程序啟動類所在包的子包之中,這樣才可以自動掃描到.1、下面準備一個程序,建立一個業務接口,而后定義這個接口的子類:package com.microboot.service;public interface IMessageService {public String info();
}package com.microboot.service.impl;import org.springframework.stereotype.Service;import com.microboot.service.IMessageService;@Service
public class IMessageServiceImpl implements IMessageService {@Overridepublic String info() {return "www.baidu.com";}}
2、建立控制層類,進行對象的配置注入.package com.microboot.controller;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import com.microboot.service.IMessageService;
import com.microboot.util.controller.AbstractBaseController;@RestController
public class MessageController extends AbstractBaseController{@Resourceprivate IMessageService messageService;@RequestMapping(value="/",method=RequestMethod.GET)public String index() {return this.messageService.info();}}
3、建立一個測試類package com.microboot.test;import javax.annotation.Resource;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;import com.microboot.StartSpringBootMain;
import com.microboot.controller.MessageController;@SpringBootTest(classes=StartSpringBootMain.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestMessageController {@Resourceprivate MessageController messageController;@Testpublic void testIndex() {System.out.println(this.messageController.index());}
}www.baidu.com
2、下面就利用以上的程序來了解一下什么叫做Bean配置,為了清楚的發現Bean配置的特點刪除業務層實現子類
中的注解@Service,也就是說這個對象現在無法直接被注入,于是下面在啟動類所在包的子包里面建立一個配置
程序類:ServiceConfig.package com.microboot.service.impl;import com.microboot.service.IMessageService;public class IMessageServiceImpl implements IMessageService {@Overridepublic String info() {return "www.baidu.com";}}package com.microboot.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import com.microboot.service.impl.IMessageServiceImpl;// 此處為配置項
@Configuration
public class ServiceConfig {// 方法名隨便寫// 此處返回的是一個Spring的配置Bean,與xml的"<bean>"等價@Beanpublic IMessageServiceImpl getMessageService() {return new IMessageServiceImpl();}
}此時采用了自動掃描Bean的模式來進行了相關對象的配置.package com.microboot.test;import javax.annotation.Resource;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;import com.microboot.StartSpringBootMain;
import com.microboot.controller.MessageController;@SpringBootTest(classes=StartSpringBootMain.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestMessageController {@Resourceprivate MessageController messageController;@Testpublic void testIndex() {System.out.println(this.messageController.index());}
}
3、SSM或SSH開發框架出現的時間比較長,現在遷移到SpringBoot之中,那么如果說現在你已經有一個非常完善
的xml配置文件出現了,那么難道還要講整個的xml配置文件轉換為Bean配置嗎? 為了防止這類情況的出現,Spring也支持有配置文件的讀取,例如:下面創建一個spring-common.xml配置文件:package com.microboot.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import com.microboot.service.impl.IMessageServiceImpl;// 此處為配置項
@Configuration
public class ServiceConfig {// 方法名隨便寫// 此處返回的是一個Spring的配置Bean,與xml的"<bean>"等價@Bean(name="configService")public IMessageServiceImpl getMessageService() {return new IMessageServiceImpl();}
}<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:p="http://www.springframework.org/schema/p"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><bean id="messageService" class="com.microboot.service.impl.IMessageServiceImpl"> </bean>
</beans>
4、隨后可以在程序啟動類上使用xml進行配置加載
package com.microboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;//@EnableAutoConfiguration
// 定義一個掃描路徑
//@ComponentScan("com.microboot")
// 啟動SpringBoot程序,而后自帶子包掃描
@SpringBootApplication
@ImportResource(locations= {"classpath:spring-common.xml"})
public class StartSpringBootMain {public static void main(String[] args) {SpringApplication.run(StartSpringBootMain.class, args);}
}package com.microboot.test;import javax.annotation.Resource;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;import com.microboot.StartSpringBootMain;
import com.microboot.controller.MessageController;@SpringBootTest(classes=StartSpringBootMain.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestMessageController {@Resourceprivate MessageController messageController;@Testpublic void testIndex() {System.out.println(this.messageController.index());}
}
如果此時所配置的兩個bean都沒有名字那么在進行注入的時候一定會出現重復的錯誤,而這個錯誤在新版本
里面將其做了完善,不過如果要想在開發之中準確的注入指定的對象,則需要使用名字完成:package com.microboot.controller;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import com.microboot.service.IMessageService;
import com.microboot.util.controller.AbstractBaseController;@RestController
public class MessageController extends AbstractBaseController{@Resource(name="messageService")private IMessageService messageService;@RequestMapping(value="/",method=RequestMethod.GET)public String index() {return this.messageService.info();}}這樣才可以準確的找到所需要的注入的實體對象:package com.microboot.test;import javax.annotation.Resource;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;import com.microboot.StartSpringBootMain;
import com.microboot.controller.MessageController;@SpringBootTest(classes=StartSpringBootMain.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestMessageController {@Resourceprivate MessageController messageController;@Testpublic void testIndex() {System.out.println(this.messageController.index());}
}
?
總結
以上是生活随笔為你收集整理的SpringBoot Bean配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot 读取资源文件
- 下一篇: SpringBoot 模版渲染