初識Spring筆記

1. 控制反轉---- Spring經過一種稱做控制反轉IoC   Inversion of Control)的技術促進了低耦合, 當應用了IoC,一個對象依賴的其它對象會經過被動的方式傳遞進來,而不是這個對象本身建立或者查找依賴對象。IOC 把對象的建立交給了 Spring,下降了咱們代碼類和類之間的耦合度,方便咱們對程序進行擴展和維護java

2. 面向切面----Spring提供了面向切面(AOP   Aspect Oriented Programming)的豐富支持,容許經過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transation)管理)進行內聚性的開發。應用對象只實現它們應該作的——完成業務邏輯。在不修改原有代碼的基礎上增長新的功能,在日誌和異常處理方面很經常使用web

**spring註解spring

 註解類:至關於一種標記,加上註解就等於爲程序打上了某種標記,沒加,則等於沒加某種標記,看你有什麼標記,就去執行相應的命令和幹相應的事。

 

(1) spring做用在類上的註解有@Component、@Responsity、@Service以及@Controller;而@Autowired和@Resource是用來修飾字段、構造函數或者設置方法,並作注入的。app

(2) 當註解做用在類上時,代表這些類是交給spring容器進行管理的,而當使用@Autowired和@Resource時,代表我須要某個屬性、方法或字段,可是並不須要我本身去new一個,只須要使用註解, spring容器會自動的將我須要的屬性、方法或對象創造出來。這就是一般所說的依賴注入和控制反轉。函數

3. applicationContext.xml 的配置的一些標籤spa

 

id:惟一標識,不能重複

name:設置名字,若是有 id 的話能夠和別的重複,不然不能

class:類的全名:包名 + 類名

scope:設置建立模式
singleton:單例,只有一個對象,默認的,最經常使用的(默認)
prototype:多例,每次都是一個新的對象

init-method / destroy-method:在對象建立和銷燬的時候調用的方法,
只有在 singleton 下有效,而且方法不能有參數

lazy-init:默認 false 在 bean factories 建立的時候,建立註冊過的全部單例類
bean factories 在第一使用 getBean 獲取單例對象的時候建立
設置爲 true 就是懶加載,只有第一次使用的時候纔會去建立對象

autowire:自動把註冊過的 bean 關聯到當前 bean 對應的屬性上
byType:若是註冊過的 bean 的類型和屬性的類型一致,那麼進行賦值操做prototype

  這個會實現自動賦值操做日誌

byName:根據註冊過的 bean 的名字自動注入屬性xml

 

4. DI:Dependency Inject 依賴注入 建立對象時動態爲屬性賦值 對象

  兩種方式:setter 注入和 構造方法注入,IOC 是 Spring 幫咱們建立對象,DI 是 Spring 幫咱們爲屬性賦值

1. 經過 setter 方法進行設置

  <property name="name" value="奧迪雙鑽">

2. 經過構造方法進行設置(index 是參數的索引,從 0 開始 , index 和 type 能夠省略)

  <constructor-arg name="price" value="200"></constructor-arg>

3. 使用 SpEL 語言賦值:寫一些簡單的 java 代碼

  <property name="name" value="#{'bmw'.toUpperCase()}"></property>

  <property name="name" value="#{user.name + ' 的汽車'}"></property>

4. p 標籤: 須要引入 xmlns:p="http://www.springframework.org/schema/p"      

  在 bean 標籤的屬性中使用 p:屬性名="" 進行賦值操做

  對象賦值須要使用 ref,包括 p 標籤也是 p:屬性名-ref="bean 的 id"

  <property name="owner" ref="user"></property>

5. 集合的賦值

    <list></list>  ArrayList
    <set></set>    HashSet
    <map>      HashMap
      <entry>
        <key></key>
        <value></value>
      </entry>
    </map>


    <props>       Properties
        <prop key="">value</prop>
        <prop key="">value</prop>
    </props>

5. 切入點和切入點表達式

切入點:
before:方法執行前,=== 參數校驗
after:方法執行後,不管是否產生異常 === 清理資源
after-returing:方法正常執行完畢 === 修改返回值
after-throwing:方法拋出異常 === 包裝異常信息
around:方法執行先後兩個點

pointcut:切入點表達式
execution(修飾符 返回值 包名.類名.方法名(參數類型))
修飾符:能夠省略
返回值:不能省略,可使用 * 代替
包名:com 不能省,可使用 * 代替,
中間的包名也可使用 * 代替,若是想省略須要寫 .. 代替
類名,方法名:不能省略,可使用 * 代替
參數:若是隻有一個參數可使用 * 代替,若是有多個參數可使用 .. 代替

6. web 項目

在web.xml 中做以下設置

        <listener>
                <listener-class>
                        org.springframework.web.context.ContextLoaderListener
                </listener-class>
        </listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>                    
相關文章
相關標籤/搜索