spring配置與使用


一,關於spring概念的理解

1,spring可以看做是項目的管家,負責管理項目中的所有對象(包括web層,service層和dao層)。

2,spring一站式框架:spring跨年性質是屬於容器性質的,它之所以能夠處理請求,是因為容器中裝了處理請求的對象,容器中裝了什么對象它就具備什么功能,所以稱之為一站式。

3,spring的核心是IOC反轉控制和AOP面向切面

4,spring不排斥任何開源框架,並且能夠幫助其他框架管理對象

 

spring中IOC和DI的概念

ioc 反轉控制 就是將我們創建對象的方式反轉了 以前對象的創建時由開發人員自己維護 包括依賴關系也是自己注入 學習spring之后 對象的創建以及依賴關系可以由spring完成創建和注入 反轉控制也就是反轉了對象的創建方式 從人們自己到由spring自己進行

di 比IOC概念要小一些 Dependency Injection 依賴注入
實現IOC思想 DI做支持

注入:set方法注入 構造方法注入 字段注入
注入類型:spring支持值類型和引用類型注入
值類型注入也就是 比如剛才的demo ,user中可以注入具體的名字或者年齡 也就相當於八大基本數據類型
引用類型注入:將依賴的對象注入 比如,將新建的address對象注入到user對象中
BeanFactory和ApplicationContext

BeanFactory接口:最底層的接口,是spring的最原始接口,針對原始接口的實現類,功能較為單一。 BeanFactory接口實現類的特點是,每次在獲得對象時才會創建對象

ApplicationContext實現類:ApplicationContext實現類的特點是每次容器啟動時就會創建容器中創建的所有對象,除此以外,它還提供了更加豐富的功能。典型的兩個ApplicationContext的實現類為:ApplicationContex從類路徑下加載配置文件ClassPathXmlApplicationContext . ApplicationContext從硬盤絕對路徑下加載配置文件FileSystemXmlApplicationContext 。 在單機情況下通常使用ClassPathXmlApplicationContext . 若使用后者,在硬盤絕對路徑下加載,則需要在后面加上括號指明文件的具體路徑。

結論上來說:在將來web開發中,使用applicationContext完成,而在資源匱乏的環境中可以使用BeanFactory(資源匱乏:如在手機上)

二,spring搭建步驟

1,導包

spring首先導入四個基本包

 

日志包

 

總包

 

2,創建一個對象讓spring裝,

創建一個bean包,並在這個包中創建user.java(也就是Javabean),並且創建屬性,也就是創建了對象

 

3,在src中書寫配置,注冊對象到容器,書寫xml文件,applicationContext.xml放在src下(這個文件的本身位置是任意的,名字也是任意的,只是建議這樣書寫)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">

<bean  name="user" class="cn.itcast.bean.User" ></bean>

<beans>

 4,約束引入,在Windows下面的屬性中選擇cata,如下圖操作


然后將user對象交給spring容器處理

5,接下來進行代碼測試,編寫測試類代碼Demo.java

               

package cn.itcast.a_hello;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import cn.itcast.bean.User;


public class Demo {
@Test
public void fun1(){

//1 創建容器對象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//2 向容器"要"user對象
User u = (User) ac.getBean("user");
//3 打印user對象
System.out.println(u);


}

}

三,spring配置詳解

1,ApplicationContext.xml中bean元素相關配置各個標簽的作用

bean元素:使用該元素描述spring容器管理的對象

name屬性:給被管理的對象起個名字,獲得對象是根據名稱獲得對象

class屬性:被管理對象的完整類名

ID屬性:與name屬性一模一樣,關於ID的話,名稱不可重復,不能使用特殊字符;name屬性名稱則可以重復,可以使用特殊字符。結論:盡量使用name屬性。

1.1 Bean元素的進階,scope屬性(重點是singleton和prototype):

一般情況下是使用singleton,但是要整合struts2時則要在ActionBean中使用prototype。而request和session屬性基本上是用不到的。

singleton(默認值):單例對象,所謂單例對象,就是在spring容器中只會存在一個的實例

prototype屬性:多例原型被標記為多例的對象,每次再獲得才會創建並且每次創建都是新的對象

 

request: web環境下,對象與request生命周期一致,也就是每當請求處理完一次,對象將從spring容器中移除

session:web環境下,對象與session生命周期一致

1.2 Bean元素的進階,生命周期屬性(了解)

生命周期屬性,配置一個方法作為生命周期初始化方法,spring會在對象創建之后立即調用(init-method)。也可以配置一個對象作為銷毀方法,spring在關閉並銷毀所有容器中的對象之前調用(destory-method)

2,三種對象創建方式

創建方式一:空參構造創建(重點)

配置文件

 

然后只需在demo.java中編寫測試類

 

創建方式二:靜態工廠創建(了解)

配置:

調用UserFactory的createUser方法創建名為user2的對象.放入容器

<bean  name="user2" 
class="cn.itcast.b_create.UserFactory" 

factory-method="createUser" ></bean>

userFactory.Java工廠如下:

 

最后編寫測試類

 

創建方式三:實例工廠創建(了解)

實例工廠創建和靜態工廠創建類似,只是在userFactory.java中,靜態工廠使用了static 而實例工廠沒有使用static。靜態工廠可以直接使用類名完成各項功能的實現,而實例工廠則需要有固定的對象,才可以完成功能的實現。

配置文件:

調用UserFactory對象的createUser2方法創建名為user3的對象.放入容器

 

UserFactory.java中工廠的編寫

 

接下來就是測試類,測試類同靜態方法創建一樣。

3, spring的模塊化配置

分模塊配置,隨着項目的開發,文件越來越多,可能吧所有對象都放一個配置文件里面太多,於是可以再一個主配置文件中引入其他配置文件,導入其他配置文件關鍵詞:<import resource="分配置文件的所在路徑">

 

4,spring屬性注入(set方式)

spring屬性注入方式一共有四種:set方法注入;構造函數注入;p名稱空間注入;spel注入;其中后兩種作為了解,前兩種作為掌握。

4.1  set方式注入,以下為其在配置文件中的操作,具體還需建立user和car的bean。並得到他們的get set 以及toString方法

4.2構造函數注入

4.3,p名稱空間注入(可以簡化property那種繁瑣的注入)

4.4,spel注入(Spring Expression Language 也就是Spring表達式語言)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM