1. 程式人生 > >Spring配置之標籤的三兩事

Spring配置之標籤的三兩事

今天看到專案的配置,看後就當是複習了。懵懵懂懂工作兩年,感覺雖然自己一直在使用spring作為工具,但是也沒有涉及到spring的方方面面,今天的研究從一次無意的自動補全開始,還是那句話,不愛研究的程式設計師不是好的java工程師。。。


前兩項<context:annotation-config/>和<context:component-scan/>這兩項自然不用說,在專案中使用的是最多的,其次要提到的就是

<context:property-placeholder/>這一項。。

<context:property-placeholder/>篇

<context:property-placeholder   
        location="屬性檔案,多個之間逗號分隔"  
        file-encoding="檔案編碼"  
        ignore-resource-not-found="是否忽略找不到的屬性檔案"  
        ignore-unresolvable="是否忽略解析不到的屬性,如果不忽略,找不到將丟擲異常"  
        properties-ref="本地Properties配置"  
        local-override="是否本地覆蓋模式,即如果true,那麼properties-ref的屬性將覆蓋location載入的屬性,否則相反"  
        system-properties-mode="系統屬性模式,預設ENVIRONMENT(表示先找ENVIRONMENT,再找properties-ref/location的),NEVER:表示永遠不用ENVIRONMENT的,OVERRIDE類似於ENVIRONMENT"  
        order="順序"  
        /> 
舉個例子:

  這個是最常見的JDBC的例子了,然後就可以使用:${key}佔位符屬性替換器

jdbc的properties檔案

dbcp.driverClassName=oracle.jdbc.driver.OracleDriver
dbcp.username=qrpay

spring配置
<context:property-placeholder location="classpath:config/jdbc.properties" />
<bean id="dataSourceSpied" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        <property name="url" value="${dbcp.url}" />
        <property name="username" value="${dbcp.username}" />
</bean>

<context:spring-configured/>篇

spring 可以為IOC容器裡的bean進行依賴注入,但如果某些類,沒有配置在IOC裡,比如一些Domain Object,是否也可以依賴注入哪?答案是肯定的

以User 為例,該User並沒有配置在IOC理,但我想對其裡面的一個UserDao進行依賴注入,其程式碼如下:

@Configurable(autowire = Autowire.BY_NAME, dependencyCheck = false)
public class User {
      private String UserName;
      ....
      private  UserDao userDao;
     ...
      @Autowired
      public void setUserDao〔UserDao userDao〕{
             this.userDao=userDao.
     }

}
然後再在XML檔案里加上 <context:spring-configured/>就可以了。<context:spring-configured/>主要是通過Spring管理AnnotationBeanConfigurerAspect切面,  具體的工作由該切面完成。

<context:load-time-weaver/>篇