1. 程式人生 > >spring註解 @PropertySource 配置資料來源

spring註解 @PropertySource 配置資料來源

    一般在配置資料來源是都會使用xml的方式注入,key-value在properties中管理;spring4.X已有著比較完善的註解來替換xml的配置方式。

使用xml配置資料來源

通常我們使用xml配置資料來源,使用SpEL獲取properties中的配置。
applicationContext.xml 中配置 dataSource 及 PreferencesPlaceholderConfigurer,使用 PropertyPlaceholderConfigurer進行Bean屬性替換

<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"
>
<property name="locations"> <list> <value>classpath:/jdbc.properties</value> </list> </property> <property name="fileEncoding" value="utf-8"/> </bean> <bean id="propertyConfigurer" class
="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="properties" ref="configProperties" /> </bean> <!-- 使用proxool連線池的資料來源, --> <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <!-- 資料來源的別名 -->
<property name="alias" value="${proxool.alias}" /> <!-- 驅動 --> <property name="driver" value="${proxool.driver}" /> <!-- 連結URL --> <property name="driverUrl" value="${proxool.driverUrl}" /> <!-- 使用者名稱--> <property name="user" value="${proxool.user}" /> <!-- 密碼 --> <property name="password" value="${proxool.password}" /> <!-- 最大連結數--> <property name="maximumConnectionCount" value="${proxool.maximumConnectionCount}" /> <!-- 最小連結數 --> <property name="minimumConnectionCount" value="${proxool.minimumConnectionCount}" /> <!-- ...(略) --> </bean>

jdbc.properties

proxool.alias=mySql
proxool.driver=com.mysql.jdbc.Driver
proxool.driverUrl=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
proxool.user=root
proxool.password=root
proxool.maximumActiveTime=1200
proxool.maximumConnectionCount=50
#...

使用javaBean配置資料來源

DataSourceConfiguration類是資料來源的javaBean配置方式,@Configuratio註解當前類,
spring啟動時會掃描被@Configuratio註解的類,注入當前類中配置的方法bean;
當然別忘了啟用註解掃描:

<context:annotation-config/>  
<context:component-scan base-package="com.XXX.test.dateSource"></context:component-scan>

@value註解讀取配置

@value中可以直接使用SpEL,獲取properties配置,成員變數也不需要getter、setter,不過還是有一個前提,需要配置xml:

<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath:/jdbc.properties</value>
            </list>
        </property>
        <property name="fileEncoding" value="utf-8"/>
    </bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
    <property name="properties" ref="configProperties" />
</bean>

@Bean註解:spring掃面當前類時,注入每個有@Bean註解的方法的返回值Bean, name屬性預設為返回值類類名首字母小寫,這裡自己設定name。

package com.XXX.test.dateSource;
import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuratio
public class DataSourceConfiguration{

    @Value("${proxool.alias}")
    private String alias;
    @Value("${proxool.driver}")
    private String driver;
    @Value("${proxool.driverUrl}")
    private String driverUrl;
    @Value("${proxool.user}")
    private String user;
    @Value("${proxool.password}")
    private String password;
    //...

    @Bean(name="dataSource")
    public ProxoolDataSource dataSource(){
         ProxoolDataSource proxoolDataSource = new ProxoolDataSource();
         proxoolDataSource.setDriver(driver);
         proxoolDataSource.setDriverUrl(driverUrl);
         proxoolDataSource.setUser(user);
         proxoolDataSource.setPassword(password);
         //...
         return proxoolDataSource;
     }
 }

這時dataSource已被注入,使用時可註解注入,如下:

    @Autowired
    private ProxoolDataSource dataSource;

@PropertySource註解讀取配置

@PropertySource註解當前類,引數為對應的配置檔案路徑,這種方式載入配置檔案,可不用在xml中配置PropertiesFactoryBean引入jdbc.properties,使用時方便得多,DataSourceConfiguration不再需要成員變數,取而代之的是需要注入一個Environment環境配置,使用env.getProperty(key)獲取資料:

package com.XXX.test.dateSource;
import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;

@Configuratio
@PropertySource("classpath:/jdbc.properties")
public class DataSourceConfiguration{
    @Autowired
    private Environment env;

    @Bean(name="dataSource")
    public ProxoolDataSource dataSource(){
         ProxoolDataSource proxoolDataSource = new ProxoolDataSource();
         proxoolDataSource.setDriver(env.getProperty("proxool.alias"));
         proxoolDataSource.setDriverUrl(env.getProperty("proxool.driver"));
         proxoolDataSource.setUser(env.getProperty("proxool.user"));
         proxoolDataSource.setPassword(env.getProperty("proxool.password"));
         //...
         return proxoolDataSource;
     }
 }

這裡主要是說明註解的用法,所以沒有具體體現資料來源全部引數的配置。對於有強迫症的來說若專案中所有bean都使用註解,幾乎不太希望僅dataSource用xml類配置,換成類的方式類配置強迫感就消失了!

相關推薦

spring註解 @PropertySource 配置資料來源

一般在配置資料來源是都會使用xml的方式注入,key-value在properties中管理;spring4.X已有著比較完善的註解來替換xml的配置方式。 使用xml配置資料來源 通常我們使用xml配置資料來源,使用SpEL獲取propert

Spring註解方式配置Redis

@Configuration public class RedisConfiguraion { @Bean public JedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfigura

Spring 註解 @PropertySource、@ImportResource、@Bean的使用

1 概述 我們對於一些屬性的配置肯定不會寫在一個配置檔案中這樣顯得耦合性太強,如何去指定配置檔案呢? 下面我們就通過@PropertySource、@ImportResource、@Bean的使用這幾個屬性的學習來解決此問題。 2 @PropertySource @Prope

基於Spring註解方式配置Quartz

之前我們都是通過基於XML的方式實現Spring  Quartz 雖然配置起來特別的方便,但是Spring還支援基本註解的方式來配置,這樣做不僅更加簡單,而且程式碼量也更加少了很多。 1、配置需要排程的類,並添加註解 import java.text.SimpleDate

Spring 註解方式配置aop:

註解配置AOP(使用 AspectJ 類庫實現的),大致分為三步: 1. 使用註解@Aspect來定義一個切面,在切面中定義切入點(@Pointcut),通知型別(@Before, @AfterReturning,@After,@AfterThrowing,@Around)

基於spring註解方式配置和使用spring AOP

spring AOP,面向切面程式設計,通常應用於系統的日誌,事物資訊輸出部分,如下圖中所示,當A呼叫B的f2方法時,如果我們想要讓系統在f2呼叫前輸出一些呼叫前的資訊,在f2呼叫結束後輸出一些呼叫結束後的資訊,一般的想法就是在呼叫f2前去呼叫C的f3,然後在呼

spring註解配置檔案混合使用

spring提供了配置檔案去例項化bean,也提供了註解去宣告bean,那可不可以兩者一起使用呢?這個當然可以的 我們使用註解去宣告bean的時候使用到Context掃描器,現在我們要使用Cont

spring mvc xml 配置資料來源通過${}

有時候我們不想在打包的時候把資料來源連線屬性等引數也打包進去。 以我們公司為例,一個專案會部署不同的地市,不同的地市使用不同的資料庫口令,連線 所以我把資料來源部分抽離處理放在tomcat的weapps目錄下面,是要修改時候直接改了重啟即可,不需要重新編碼程式碼或者修改原始

spring中mybatis配置資料來源讀取不到properties屬性檔案的問題

<bean id="tomcatJdbcDataSourceFactory" class="com.qunar.db.resource.impl.TomcatJdbcDataSourceFactory"/>    <bean id="dataSource

Spring----註解簡化配置

用註解的方式來簡化配置 元件掃描@Component("bean的id,預設預設值為類名首字母小寫") 什麼時元件掃描? 如何使用元件掃描 step1:在類前面新增相應的註解 Student.java @Component("stu1") public class

spring 註解方式配置定時任務

一、註解的方式 1:spring 配置檔案中增加這句 <task:annotation-driven/> 2:確保掃描程式能夠掃描後 下面第3步驟的java類 <context:component-scan base-pack

spring boot 註解方式配置資料來源與使用

1、首先看一下application-dev.yml 配置 spring:     datasource:         type: com.alibaba.druid.pool.Dru

藉助Spring和自定義註解完成多資料來源配置

前一段時間研究了一下spring多資料來源的配置和使用,為了後期從多個數據源拉取資料定時進行資料分析和報表統計做準備。由於之前做過的專案都是單資料來源的,沒有遇到這種場景,所以也一直沒有去了解過如何配置多資料來源。 後來發現其實基於spring來配置和使用多資

Springmvc+mybatis+spring資料來源配置 AOP+註解方式切換資料來源

紙上得來終覺淺,絕知此事要躬行 最終效果就是,通過在service層類或方法上,註解宣告需要的資料來源名稱,從而實現切換資料來源的目的 理論知識就不說了,直接上程式碼(不支援分散式事務)* 1.準備多資料來源properties檔案 <!-- 資料

Spring+SpringMVC+Mybatis使用註解方式配置資料來源

場景描述: 在開發過程中A系統在建立角色,給角色授權之時,要將角色的許可權存入到B系統之中,由於另外B系統不提供對許可權的操作介面,只能修改他的角色許可權庫。 我這裡使用的配置雙資料來源,雙sessionFactory,雙事務,雙掃描、的方法,至於動態切換的等使用後再分享。

Spring註解驅動開發】使用@PropertySource載入配置檔案,我只看這一篇!!

## 寫在前面 > 很多小夥伴都在問:冰河,你的Spring專題更新完了嗎?怎麼感覺像是寫了一半啊?我:沒有更新完呀,整個專題預計會有70多篇。那怎麼更新了一半就去寫別的了呢?那是因為有很多其他的小夥伴在後臺留言說:急需學習一些其他的技術,所以,臨時調整的。放心,Spring專題會持續更新的!這不,今

註解方式配置spring+springMVC

bsp ces roo 註意 public jsp 視圖 lte turn 1、新建類initConfig,繼承AbstractAnnotationConfigDispatcherServletInitializer,並重寫getRootConfigClasses()、ge

Spring介紹及配置(XML文件配置註解配置)

處理 tis 配置文件 3.0 span 特點 inverse logging 結構 本節內容: Spring介紹 Spring搭建 Spring概念 Spring配置講解 使用註解配置Spring 一、Spring介紹 1. 什麽是Spring

使用@Configuration註解來代替Spring的bean配置

ble get new .com 安全 class alt 一個 需要 下面是一個典型的Spring配置文件(application-config.xml): 1 2 3 4 5 6 7 8 <beans> <bean

使用Spring框架入門二:基於註解+XML配置的IOC/DI的使用

bsp hot sources hierarchy osi pan ioc clas operate 一、簡述 本文主要講使用註解+xml配合使用的幾種使用方式。基礎課程請看前一節。 二、步驟 1、為Pom.xml中引入依賴:本例中使用的是spring-context