1. 程式人生 > >Spring4.x【入門 what +why +how】

Spring4.x【入門 what +why +how】

一、Spring概念【概念瞭解一下,主要是how】【what +why + how】
【what】Spring是開源的輕量級框架, 也是一個一站式的框架。什麼叫做一站式的框架?也就是它針對javaWeb不同的層次都提供了相對對應的解決方法。比如說針對dao層,它有jdbcTemplate技術,針對service有ioc,針對web層有SpringMvc。【why】Spring它有兩個核心部分,一個是ioc,控制反轉,管理Bean容器,通俗解釋是,將物件的例項化交給Spring來管理,也就是物件不是new 出來的,而是通過Spring配置出來的。好處是,當你的物件類發生改變的時候,你不需要去修改new 的程式碼,這是一種優化的設計模式,另一個是aop,面向切面的程式設計。什麼叫切面的程式設計?在不修改原始碼的情況下給程式新增通統一的功能,達到增強的效果。通俗解釋,在執行方法前或後做一定的操作,舉個例子就是所有方法的日誌,所有Dao的事務。【how】下面講吧!有幾種!需要會用


二、How:上述提到有ioc和aop。接下來會分別一個個講解
1:Spring4之IOC的使用步驟:
a:匯入包,這一篇文章主要是寫給基礎的學員,所以怎麼找包的過程會詳細截圖。。後面我會全部分好各類的包發給大家

spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar
四個核心基礎包,無論什麼操作都要加這個核心基礎包哦

這裡寫圖片描述
【注意】在使用包過程中經常會匯入到兩個特別的包log4j-1.2.16.jar和commons-logging-1.2.jar,這兩個是錯誤日誌和支援錯誤日誌的包,也是需要匯入的,所以一共要6個包,看截圖


這裡寫圖片描述
第二步 建立類,在類裡面建立方法

//建立該類,等會測試用
public class Bean2 {
    public void add() {
        System.out.println("bean2.........");
    }
}

第三步 建立spring配置檔案,配置建立類。官方是推薦命名為applicationContext.xml。預設會載入這個檔案,但是要自定義自己的xml也可以。下面是命名為bean.xml【核心步驟】

//引入約束,約束有點複雜,放在下一篇詳細講這些約束是怎麼找到的。固定Copy就可以
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> /* 主要屬性: id屬性:是給該類提供一個別名,獲取該類的時候用到 class屬性:建立物件所在類的全路徑。反射方式生成該類物件 name屬性:少用到,它跟id是一樣的,但是他可以包含特殊字元。一般就不用了 scope屬性:有興趣的可以驗證一下,兩次獲取bean物件,比賽兩者是否相等 singleton:預設值,單例 prototype:多例 //以下做了解吧,我也很少用到, request:建立物件把物件放到request域裡面 session:建立物件把物件放到session域裡面 globalSession:建立物件把物件放到globalSession裡面 */ <bean id="user" class="cn.itcast.ioc.User" scope="prototype"></bean> </beans>

第四步 寫程式碼測試物件建立,以下的第一二行程式碼是固定寫法,記住。就是去讀取配置檔案,然後獲得類的例項化

    @Test
    public void testUser() {
        //1 載入spring配置檔案,根據建立物件
        ApplicationContext context = 
                new ClassPathXmlApplicationContext("bean.xml");
        //2 得到配置建立的物件
        User user = (User) context.getBean("user");
        user.add();
    }

以上便完成了IOC的基礎入門案例。接下來多嘴說一下,ioc的一些其他知識!有興趣可以看一下

//Xml中配置Bean方式有三種。
//第一種是通過類的無引數構造方法,如果說類中無無引數構造方法就會報錯
<bean id="user" class="cn.itcast.ioc.User" scope="prototype">
</bean> 

//第二種方法是:建立靜態的方法,返回類物件。這裡需要依賴於一個工廠,方法是getBean2
<!-- 使用靜態工廠建立物件 -->
<bean id="bean2" class="cn.itcast.bean.Bean2Factory" factory-method="getBean2"></bean>

//第三種方法是:使用例項工廠建立。非靜態的方法
<!-- 使用例項工廠建立物件 -->
<!-- 建立工廠物件 -->
<bean id="bean3Factory" class="cn.itcast.bean.Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>

//瞭解一下有第二三中建立的方法。有時候在優化程式碼設計模式的時候會用到。一般還是使用第三種

三:屬性注入,也就是通過配置檔案的方式去給變數注入資訊【重要,經常用到】,可以通過配置檔案的方式注入,也可以通過註解的方式注入,先介紹配置檔案方式注入
第一種:使用有引數構造注入屬性,採用該方法注入屬性的時候,需要寫有引數的構造方法才能實現,否則的話就報錯,一般很少用,寫構造方法麻煩

<constructor-arg name="username" value="小王小馬"></constructor-arg>
//例子
<bean id="demo" class="cn.itcast.property.PropertyDemo1"> -->
        <!-- 使用有參構造注入 -->
    <constructor-arg name="username" value="小王小馬"</constructor-arg>
    </bean>

第二種:使用set方法注入屬性(重點),在類中生成變數的set方法,通過set方法注入

//這種寫法經常看到,推薦使用這種
<property name="bookname" value="易筋經"></property>
<!-- 使用set方法注入屬性 -->
<bean id="book" class="cn.itcast.property.Book"> -->
    <!-- 注入屬性值 
        name屬性值:類裡面定義的屬性名稱
        value屬性:設定具體的值
    -->
    <!-- <property name="bookname" value="易筋經"></property>
    </bean>

註解注入看下一篇咯