1. 程式人生 > >spring筆記1

spring筆記1

and 環境 rgb ins str 名稱空間 主動 .class ogg

一.概述
1.Spring是分層的Java SE/EE應用 full-stack輕量級開源框架,以IoC和AOP為內核,提供了展現層Spring MVC和持久層Spring JDBC以及業務層事務管理等眾多的企業級應用技術,還能整合開源世界眾多著名的第三方框架和類庫,逐漸成為使用最多的Java EE企業應用開源框架。

2.Rod Johnson(spring之父)
Expert One-to-One J2EE Design and Development(2002)
闡述了J2EE使用EJB開發設計的優點及解決方案
Expert One-to-One J2EE Development without EJB(2004)
闡述了J2EE開發不使用EJB的解決方式(Spring雛形)

3.優勢:
方便解耦,簡化開發;
AOP編程的支持;
聲明式事務的支持;
方便程序的測試;
方便集成各種優秀框架;
降低JavaEE API的使用難度;
Java源碼是經典學習範例

二.相關概念
耦合:類之間的依賴關系稱為耦合;
控制反轉-Inversion Of Control:將主動new對象的方式轉變為通過工廠進行被動創建的方式,稱為控制反轉,是一種思想轉變;
依賴註入:將屬性值註入到屬性中的具體技術,spring中有兩種依賴註入方式:構造方法註入/set方式註入;


三.環境搭建
1.導包;
4+2:4個spring核心包,2個依賴包(阿帕奇的日誌包logging/log4j)
圖1

2.創建類
3.創建配置文件(applicationContext.xml)
舉例:

  1   <?xml version="1.0" encoding="UTF-8"?>
  2      <!--引入約束  -->
  3      <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"
  4          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "
> 5 <!-- 將user類交給spring管理 6 name:不可重復; 7 class:類的全限定名; 8 scope:指定spring中對象的作用的域 9 singleton(默認值):單例,對象在啟動時創建; 10 prototype:原型多例,每次獲得對象時,都創建新的對象; 11 --> 12 <!--以下註入為spring調用構造方法創建 /set方法註入--> 13 <bean name="user1" class="huguangqin.com.cnblogs.domain.User"> 14 <property name="name" value="jack"></property> 15 <property name="age" value="18"></property> 16 </bean>

4.測試
  1  package huguangqin.com.cnblogs.demo;
  2      import org.junit.Test;
  3     import org.springframework.context.support.ClassPathXmlApplicationContext;
  4      public class demo1 {
  5          @Test
  6          public void demoTest() {
  7              // 創建spring容器
  8             ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  9              // 從spring容器中取user對象
 10             Object bean = ac.getBean("user1");
 11              System.out.println(bean);
 12          }
 13      }
 14 
 15 

四.依賴註入配置(applicationContext.xml)
1.set方法註入
  1     <!-- 以下註入為spring調用構造方法創建或set方法註入 -->
  2     <bean name="user1" class="huguangqin.com.cnblogs.domain.User">
  3          <property name="name" value="jack"></property>
  4          <property name="age" value="18"></property>
  5      </bean>

2.set方法註入--p名稱空間註入

  1     <!--約束中需添加:xmlns:p="http://www.springframework.org/schema/p" -->
  2     <bean name="user3" class="huguangqin.com.cnblogs.domain.User" p:name="rose" p:age="22" p:car-ref="car"></bean>

3.構造方法註入

  1      <!--以下為構造方法註入-->
  2     <bean name="user2" class="huguangqin.com.cnblogs.domain.User">
  3         <constructor-arg name="name" value="tom"></constructor-arg>
  4         <constructor-arg name="age" value="8"></constructor-arg>
  5          <constructor-arg name="car" ref="car"></constructor-arg>
  6      </bean>
  7      <bean name="car" class="huguangqin.com.cnblogs.domain.Car">
  8          <constructor-arg name="name" value="Benz"></constructor-arg>
  9          <constructor-arg name="color" value="red"></constructor-arg>
 10      </bean>

4.復雜類型註入

  1  <bean name="cb" class="huguangqin.com.cnblogs.domain.CollectionBean">
  2          <!--Object[] array -->
  3          <property name="array">
  4              <array>
  5                  <value>rose</value>
  6                  <ref bean="car"></ref>
  7              </array>
  8          </property>
  9 
 10         <!--List list-->
 11          <property name="list">
 12              <list>
 13                  <value>jack</value>
 14                  <ref bean="car"></ref>
 15              </list>
 16          </property>
 17 
 18          <!--Map map-->
 19          <property name="map">
 20              <map>
 21                  <entry key="lilei" value-ref="car"></entry>
 22                  <entry key-ref="car" value="hanmeimei"></entry>
 23              </map>
 24          </property>
 25 
 26          <!--Properties props-->
 27          <property name="props">
 28              <props>
 29                  <prop key="poli">波莉</prop>
 30                  <prop key="lisa">莉莎</prop>
 31              </props>
 32          </property>
 33      </bean>
 34 
 35     <bean name="car" class="huguangqin.com.cnblogs.domain.Car">
 36          <constructor-arg name="name" value="Benz"></constructor-arg>
 37          <constructor-arg name="color" value="red"></constructor-arg>
 38      </bean>
 39 

spring筆記1