1. 程式人生 > >spring基於java配置@Configuration和@Bean用法【程式碼示例】

spring基於java配置@Configuration和@Bean用法【程式碼示例】

public class MyDriverManager {
	
	public MyDriverManager(String url,String userName,String password){
		System.out.println("url="+url);
		System.out.println("username="+userName);
		System.out.println("password="+password);
	}
}

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

@Configuration
@ImportResource("classpath:config.xml")
public class StoreConfig {
	@Value("${jdbc.url}")
	private String url;
	
	@Value("${jdbc.username}")
	private String username;
	
	@Value("${jdbc.password}")
	private String password;
	
	@Bean
	public MyDriverManager myDriverManager(){
		return new MyDriverManager(url,username,password); 
	}
}


@ImportResource("")是獲得xml檔案,但在xml檔案中又載入了config.properties配置檔案,

所以也就間接的載入了config.properties配置檔案

@Value("${key-name}")  將配置檔案中的值儲存在指定欄位中

這兩個註解加在一起無非就是完成從配置檔案中獲取鍵值對的功能,可以用xml檔案實現

<context:property-placeholder location="classpath:jdbc.properties"/>
<bean class="org.Springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="url" value="${"jdbc.url"}"/>
</bean>


@Bean標識一個用於配置和初始化一個由springIOC容器管理的新物件,其作用類似於xml檔案中的<bean></bean> 

添加了此註解 就無須在MyDriverManager類中新增那四個註解中的一個了

(傳說中的四個註解:@Component @Repository @Service @Controller)

若沒有(name="  ")則預設id或稱之為name為方法的名稱

config.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"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd" >
        
		<context:property-placeholder location="classpath:/config.properties" />
		
</beans>


config.properties配置檔案

jdbc.url=127.0.0.1
jdbc.username=root
jdbc.password=root



注意檔案中的username前加jdbc.是很必要的!

單元測試類:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import test.UnitTestBase;

@RunWith(BlockJUnit4ClassRunner.class)
public class TestBean extends UnitTestBase{
	public TestBean(){
		super("classpath:spring-bean-annotations.xml");
	}
	
	@Test
	public void test(){
		MyDriverManager driver=super.getBean("myDriverManager");
		System.out.println(driver.getClass().getName());
	}
}


spring-bean-annotations.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"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd" >
        
        <context:component-scan base-package="test10"></context:component-scan>

 </beans>


整體理一下思路


1.載入的spring-bean-annotations.xml檔案是為了可以在test10包中找到MyDriverManager類

但如果給類加@Component註解會有異常


2.通過“myDriverManager”獲得例項物件,因為在StoreConfig類中

有加了@Bean註解的 得到一個MyDriverManager例項物件的方法

並且其構造器的引數宣告為成員變數,是通過載入config.xml檔案得到的

3.在congif.xml檔案中載入了config.properties資原始檔,獲得其中的鍵值對

相關推薦

spring基於java配置@Configuration@Bean用法程式碼示例

public class MyDriverManager { public MyDriverManager(String url,String userName,String passwo

Spring基於Java配置@Configuration@Bean用法

Spring中為了減少xml中配置,可以宣告一個配置類(例如SpringConfig)來對bean進行配置。 一、首先,需要xml中進行少量的配置來啟動Java配置: <?xml version="1.0" encoding="UTF-8"?> <bea

Java 8 LsitMap之間轉化-程式碼示例

1、List<T>轉Map<S,List<T>> Map<String, List<Entity>> demoMap = demoList.stream() .col

Spring基於Java配置Bean(四):通過@Configuration配置類引用xml配置資訊

總結:在@Configuration配置類中,通過@ImportResource就可以引入xml配置檔案,在配置類中可直接通過@AutoWired引用xml檔案中定義的bean。(1)XML配置檔案<?xml version="1.0" encoding="UTF-8"

Spring使用Hibernate再加SpringData時配置的差別基於Java配置

.sh for packages bean java配置 gem springmvc nbsp mod 只使用Spring+Hibernate 配置DataSource、LocalSessionFactoryBean、HibernateTransactionManager

[java][spring]取得通過配置檔案註解注入的bean、取得當前資料庫連線、取得ApplicationContext的方法

[spring]取得通過配置檔案和註解注入的bean、取得當前資料庫連線、取得ApplicationContext的方法 1、思路: 應用程式啟動時使用ApplicationContextAware讓Spring容器傳遞自己生成的ApplicationContext給我們,

Spring Java Configuration之@Configuration@Bean

Spring Java Configuration是指用配置類來代替spring中的xml配置檔案, 總的來說@Configuration相當於xml中的<beans>標籤,@Bean相當於xml中的<bean>標籤。 @Configuration沒

Spring(八)之基於Java配置

onf 需要 rgs ava poi .com class 解釋 mes 基於 Java 的配置 到目前為止,你已經看到如何使用 XML 配置文件來配置 Spring bean。如果你熟悉使用 XML 配置,那麽我會說,不需要再學習如何進行基於 Java 的配置是,因為你要

Spring依賴注入(基於XML配置檔案Annotation的方式完成屬性裝配)

依賴注入的方式(手工裝配): 1.使用bean的構造器注入—基於XML方式 2.使用屬性setter方法注入—基於XML方式 3.使用field注入—基於Annotation方式 注入依賴物件可

Spring-基於Java類的配置

概述 JavaConfig是Spring的一個子專案,它旨在通過Java類的方式提供Bean的定義資訊,在Spring4.0的版本,JavaConfig正式成為Spring4.0的核心功能。 使用Java類提供Bean定義資訊 普通的P

基於 java 配置Spring

1 修改 web.xml <!--使用java配置檔案 需要顯式的指定上下文配置類, 在使用xml配置方式的時候Spring預設使用ClassPathXmlApplicationContex

Spring問題集:@value放在Spring基於java配置檔案中取不到值

在測試Spring的事務的時候需要連線資料庫,但是發現@Value的值一直就是“{${jdbc.url}}”,並沒有從配置檔案中獲取到值, 配置檔案的程式碼如下: @Configuration @ComponentScan(basePackages =

Spring註解開發元件註冊-使用@Configuration@Bean給容器中註冊元件

## 寫在前面 > 在之前的Spring版本中,我們只能通過寫XML配置檔案來定義我們的Bean,XML配置不僅繁瑣,而且很容易出錯,稍有不慎就會導致編寫的應用程式各種報錯,排查半天,發現是XML檔案配置不對!另外,每個專案編寫大量的XML檔案來配置Spring,也大大增加了專案維護的複雜度,往往很多

springJava配置入門(Spring Boot學習之一)

配置文件 png bean 日誌 簡單 pom artifact 簡單的 ret spring的Java配置 1、創建maven項目 使用idea創建maven項目,這裏順便提一下,idea真的比eclipse好用,早點熟悉吧。然後就是maven是java項目管理最主流的工

JAVA中thissuper用法

出現 子句 package code rgs lean 眼睛 都是 java對象   參考網上資料和自行理解總結java中this和super中各自用法及其差異   <一>. this的用法   構造方法是創建java對象的重要途徑,通過new關鍵字調用構造器

SpringBoot學習(二)-->SpringJava配置方式

play sin ext ryu 代碼 容器 技術 測試結果 支持 二、Spring的Java配置方式 Java配置是Spring4.x推薦的配置方式,可以完全替代xml配置。 1、@Configuration 和 @Bean Spring的Java配置方式是通過 @

Spring 基於xml配置方式的AOP(8)

復制 calc owin img add ann frame proc message 1、ArithmeticCalculator.java 1 package com.proc; 2 3 public interface ArithmeticCalculator

Springboot中的@Configuration@Bean

問題的提出:springboot 的properties已經包含了很多預設配置了 我們再用@Configuration 配置的目的是什麼 ? 問題回答:在Spring Boot中,Starter為我們自動啟用了很多Bean,這些Bean的配置資訊通過properties的方式暴露出來以供使用人員

SpringJava配置方式、讀取配置檔案資訊

Spring的發展 Spring1.x 時代 在Spring1.x時代,都是通過xml檔案配置bean,隨著專案的不斷擴大,需要將xml配置分放到不同的配置檔案中,需要頻繁的在java類和xml配置檔案中切換。 Spring2.

Spring Cloud:配置中心訊息匯流排(終結版)(09)

我們在springcloud(七):配置中心svn示例和refresh中講到,如果需要客戶端獲取到最新的配置資訊需要執行refresh,我們可以利用webhook的機制每次提交程式碼傳送請求來重新整理客戶端,當客戶端越來越多的時候,需要每個客戶端都執行一遍,這種方案就不太適合了。使用Spring C