[TOC]
# 構造器注入
需要User類中有這個對應的構造方法
~~~
<!-- 將User對象交給spring容器管理 -->
<bean name="user" class="studySpring.User">
<constructor-arg name="name" value="jerry"></constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<!-- 將Car對象配置到容器 -->
<bean name="car" class="studySpring.Car">
<!-- 為user類的name和age屬性注入值 -->
<property name="name" value="蘭博基尼"></property>
<property name="color" value="黃色"></property>
</bean>
~~~
如果來個構造函數重載呢?

~~~
<!-- 將User對象交給spring容器管理 -->
<bean name="user" class="studySpring.User">
<!-- name屬性:構造函數的參數名 -->
<!-- index屬性:構造函數的參數索引 -->
<!-- type屬性:構造函數的參數類型 -->
<constructor-arg name="name" value="99" index="0" type="java.lang.Integer"></constructor-arg>
<constructor-arg name="car" ref="car" index="1"></constructor-arg>
</bean>
<!-- 將Car對象配置到容器 -->
<bean name="car" class="studySpring.Car">
<!-- 為user類的name和age屬性注入值 -->
<property name="name" value="蘭博基尼"></property>
<property name="color" value="黃色"></property>
</bean>
~~~
# setter方法注入
普通的值類型
~~~
<!-- 將User對象交給spring容器管理 -->
<bean name="user" class="studySpring.User">
<!-- 為user類的name和age屬性注入值 -->
<property name="name" value="tom"></property>
<property name="age" value="18"></property>
</bean>
~~~
引用類型
~~~
<!-- 將User對象交給spring容器管理 -->
<bean name="user" class="studySpring.User">
<!-- 為user類的name和age屬性注入值 -->
<property name="name" value="tom"></property>
<property name="age" value="18"></property>
<!-- 把bean的name寫這就行 -->
<property name="car" ref="car"></property>
</bean>
<!-- 將Car對象配置到容器 -->
<bean name="car" class="studySpring.Car">
<!-- 為user類的name和age屬性注入值 -->
<property name="name" value="蘭博基尼"></property>
<property name="color" value="黃色"></property>
</bean>
~~~
# 名稱空間p和c的使用
Spring2.0以后提供了xml命名空間
首先配置文件

~~~
<!--
1.p名稱空間注入 xmlns:p="http://www.springframework.org/schema/p"
2.使用p:屬性完整注入
|-值類型: p:屬性名="值"
|-對象類型: p:屬性名-ref="bean名稱"
-->
<bean name="user1" class="studySpring.User" p:name="jack" p:age="20" p:car-ref="car"></bean>
~~~

# spel
spring expression language 是在spring3.0以后的版本提供
它類似于ognl或el表達式,它可以提供在程序運行時構造復雜表達式來完成對象屬性存儲及方法調用等。
Spel表達式的格式 `#{表達式}`
~~~
<bean name="user1" class="studySpring.User">
<!-- 調用bean的name為user的對象,取他的name值 -->
<property name="name" value="#{user.name}"></property>
<!-- 引用對象不可使用spel -->
<property name="car" ref="car"></property>
</bean>
~~~
# 集合屬性注入
首先準備個測試類
~~~
public class CollectionBean {
// 數組類型注入
private Object[] arr;
// list/set 類型注入
private List list;
// map類型注入
private Map map;
// properties類型注入
private Properties prop;
}
~~~
然后生成get/set/tostring等方法
## array注入
~~~
<!-- array注入 -->
<bean name="cb" class="studySpring.CollectionBean">
<!-- 如果數組只有一個值(對象),直接使用value|ref -->
<!-- <property name="arr" value="tom"></property> -->
<property name="arr">
<array>
<value>tom</value>
<value>jerry</value>
<!-- 把這個bean注入進來 -->
<ref bean="user" />
</array>
</property>
</bean>
~~~
## list注入
~~~
<bean name="cb" class="studySpring.CollectionBean">
<!-- 如果list組只有一個值(對象),直接使用value|ref -->
<!-- <property name="list" value="jack"></property> -->
<property name="list">
<list>
<value>tom</value>
<value>jerry</value>
<!-- 把這個bean注入進來 -->
<ref bean="user" />
</list>
</property>
</bean>
~~~
## map注入
~~~
<bean name="cb" class="studySpring.CollectionBean">
<property name="map">
<map>
<entry key="url" value="jdbc:mysql://crm"></entry>
<!-- bean的名字為user -->
<entry key="user" value-ref="user"></entry>
<!-- key也可以是引用類型 -->
<entry key-ref="user" value-ref="user"></entry>
</map>
</property>
</bean>
~~~
## properties注入
~~~
<bean name="cb" class="studySpring.CollectionBean">
<property name="prop">
<props>
<prop key="driverClass">com.jdbc.mysql.Driver</prop>
<prop key="userName">root</prop>
<prop key="password">root</prop>
</props>
</property>
</bean>
~~~
- 基礎
- 編譯和安裝
- scanner類(鍵盤錄入)
- Random類(隨機數)
- 數組
- 方法
- 類
- ArrayList集合
- char與int
- eclipse
- IDEA
- 變量與常量
- 常用API
- String,StringBuffer,StringBuilder
- 正則,Date,DateFormat,Calendar
- 包裝類,System,Math,Arrays,BigInteger,BigDecimal
- 集合,迭代器,增強for,泛型
- List,set,判斷集合唯一
- map,Entry,HashMap,Collections
- 異常
- IO
- File
- 遞歸
- 字節流
- 字符流
- IO流分類
- 轉換流
- 緩沖流
- 流的操作規律
- properties
- 序列化流與反序列化流
- 打印流
- commons-IO
- IO流總結
- 多線程
- 線程池
- 線程安全
- 線程同步
- 死鎖
- lock接口
- ThreadLoad
- 等待喚醒機制
- 線程狀態
- jdbc
- DBUtils
- 連接池DBCP
- c3p0連接池
- 網絡編程
- 多線程socket上傳圖片
- 反射
- xml
- 設計模式
- 裝飾器模式
- web service
- tomcat
- Servlet
- response
- request
- session和cookie
- JSP
- EL
- JSTL
- 事務
- 監聽器Listener
- 過濾器Filter
- json
- linux安裝軟件
- 反射詳解
- 類加載器和注解
- 動態代理
- jedis
- Hibernate
- 簡介
- 創建映射文件
- Hibernate核心配置文件
- 事務和增刪改查
- HibernateUtils
- 持久化對象的三種狀態
- 檢索方式
- query
- Criteria
- SQLQuery
- 持久化類
- 主鍵生成策略
- 緩存
- 事務管理
- 關系映射
- 注解
- 優化
- struts2
- 搭建
- 配置詳解
- Action
- 結果跳轉方式
- 訪問ServletAPI方式
- 如何獲得參數
- OGNL表達式
- valueStack 值棧
- Interceptor攔截器
- spring
- 導包
- IOC和DI
- Bean獲取與實例化
- Bean屬性注入
- spring注解
- 注解分層
- junit整合
- aop
- 動態代理實現
- cglib代理實現
- aop名詞
- spring的aop
- aop-xml詳解
- aop-注解詳解
- 代理方式選擇
- jdbcTemplate
- spring事務管理
- 回滾注意
- 事務傳播屬性
- MyBatis
- MyBatis簡介
- 入門程序
- 與jdbc hibernate不同
- 原始Dao開發
- Mapper動態代理方式
- SqlMapConfig.xml配置文件
- 輸入參數pojo包裝類
- resultMap
- 動態sql
- 一對一關聯
- 一對多
- 整合spring
- 逆向工程
- maven
- maven簡介
- 倉庫
- maven目錄結構
- maven常用命令
- 生命周期
- eclipse中maven插件
- 入門程序
- 整合struct
- 依賴范圍
- 添加插件
- idea配置
- jar包沖突
- 分模塊開發
- 構建可執行的jar包(包含依賴jar包)
- springMVC
- 處理流程
- java面試
- java版本升級
- java1-8版本變更
- java9新特性
- 鎖
- java資料
- idea
- jdk版本切換
- log4j
- 入門實例
- 基本使用方法
- Web中使用Log4j
- spring中使用log4j
- java代碼優化