JavaWeb学习之路——SSM框架之Spring(四)
SSM框架學習-Spring01
?
1,.Spring介紹
Spring 是一個開源框架,是為了解決企業應用程序開發復雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個組件,同時為 J2EE 應用程序開發提供集成的框架。
?
2.功能
1).Spring IOC(DI):依賴注入、控制反轉
2).Spring AOP:面向切面編程
3).聲明式事務
4).Spring Struts Struts2 SpringMVC表現層整合
5).Sring Transction事物整合;
6).SSH(Spring Struts Hibernate)框架
7).SpringMVC Spring 提供表現層整合;
8).SSM(Spring SpringMVC MyBatis)
?
IOC:
控制反轉:它是程序中的之間的關系,不用代碼控制,而完全是由容器來控制。?
例如:
在之前我們創建對象的時候,需要New 一下,然后后面接一個類,調用構造方法,這樣jvm就會給我們生產一個對象,如:Person person =new Person,這時候就產出了person這個對象。但是有了Spring以后,我們只需要在Bean 里面配置好,就可以使用了;
?
AOP
它利用一種稱為”橫切”的技術,剖解開封裝的對象內部,并將那些影響了多個類的公共行為封裝到一個可重用模塊。
所謂”切面”,簡單說就是那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便于減少系統的重復代碼,降低模塊之間的耦合度,并有利于未來的可操作性和可維護性。
?
3.Spring運行時環境
Test:提供的一個測試功能;
Core?Container:為核心容器,啟動Spring的基本文件;
? ? Beans:負責管理對象
? ? Context:上下文參數。獲取外部資源或管理注解等
AOP:實現aop功能需要依賴
Aspects:切面AOP依賴的包
Data?Access/Integration:spring封裝數據訪問層的相關內容
? ? JDBC:Spring對JDBC封裝后的代碼
? ? ORM:封裝了一些持久層框架的代碼。例如:Hibernate
? ? Transaction:對應spring-tx.jar,聲明式? 事務使用
WEB:需要spring完成web相關功能時需要。例如:由tomcat加載spring配置文件時需要有spring-web.jar包
1)容器(Container):Spring當做一個大容器
2)BeanFactory接口,老版本,新版本中ApplicationContext接口,是BeanFactory子接口。BeanFactory的功能在ApplicationContext中都有
3)從Spring3開始把Spring框架的功能拆分為多個jar,2以前就一個jar
?
4.IOC——控制反轉
? 1) IoC完成的事情是不由new實例化對象,而轉交給Spring負責,控制指的是控制類的對象,反轉指的是轉交給Spring負責。
? ?其作用就是——解耦。
? ?程序員不需要管理對象,解除了對象管理和程序員之間的耦合
javabeansXML配置文件:
<?xml?version="1.0"?encoding="UTF-8"?><beans?xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- id表示獲取到對象標識class 創建哪個類的對象--><bean?id="flo"?class="com.likui.pojo.Flower"><property?name="name"?value="牡丹"></property><property?name="id"?value="1"></property><property?name="price"?value="2.0"></property><property?name="production"?value="中國"></property></bean></beans>?
java中得到這個對象:
ApplicationContext?ac?=?new?ClassPathXmlApplicationContext("beans.xml");Flower?flower?=?ac.getBean("flo",Flower.class);System.out.println(flower.getId()+"? "+flower.getName()+"? "+flower.getPrice()+"? "+flower.getProduction());結果展示:
?
2)spring創建對象的三種方式
(1)通過構造方法構建
無參構造方法:默認。
有參構建對象:前提為類中有有參構造器,然后需要在bean中明確配置,
java有參構造器
?????public?Flower(int?id, String?name,?double?price, String?production) {this.id?=?id;this.name?=?name;this.price?=?price;this.production?=?production;}javabean中順序寫法
? ??<bean?id="flo2"?class="com.likui.pojo.Flower"><!--ref引用另一個bean,value引用基本數據類型index代表參數索引,name、type和index可以確定使用哪一個有參構造器,默認為最后一個--><constructor-arg?index="0"?name="id"?type="int"?value="0">?</constructor-arg><constructor-arg?index="1"?name="name"??value="月季">?</constructor-arg><constructor-arg?index="2"?name="price"?type="double"?value="2.5">?</constructor-arg><constructor-arg?index="3"?name="production"?value="日本">?</constructor-arg></bean>?
?
(2)實例工廠——需要先創建工廠,才能生產對象
工廠模式:幫助創建類對象,一個工廠可以生產多個對象。
一般模板:
public static INoodles createNoodles(int type) {switch (type) {case TYPE_LZ:return new LzNoodles();case TYPE_PM:return new PaoNoodles();case TYPE_GK:default:return new GankouNoodles();}}?
實例工廠具體使用方法:
xml配置文件:利用bean創造工廠類的對象,然后利用這個工廠對象生產相應的對象?
??<bean?id="factory"?class="com.likui.pojo.Factory"></bean><bean?id="rose"?factory-bean="factory"?factory-method="newInstance2"></bean>java文件:
public?class?Factory {//普通工廠模式代碼public?Flower newInstance(String?key) {switch?(key) {case?"Flower":return?new?Flower();case?"rose":return?new?Flower();default:return?null;}}?????//使用javabean創建對象
?????public?Flower newInstance2(){return?new?Flower(1,"牡丹",3.0,"日本");}}(3)靜態工廠——不需要創建工廠就能產生對象
使用具體方法:將工廠類中的方法使用static來使用,不需要創建工廠對象
xml中配置文件:
<bean?id="rose2"?class="com.likui.pojo.Factory"?factory-method="newInstance3"></bean>3)對對象屬性賦值
(1)利用構造器來對屬性賦值(前面已有)
(2)利用set方法來賦值,即利用property來利用set方法來注入,基本數據類型或者String,value放里面或者外面都可以
list、set、map用相應的屬性標簽來一個個給它們進行賦值
?????<bean?id="flo"?class="com.likui.pojo.Flower"><property?name="name"?value="牡丹"></property><property?name="id"?><value>1</value></property><property?name="price"?value="2.0"></property><property?name="production"?value="中國"></property><property?name="list"><list><value>1</value><value>2</value><value>3</value></list></property></bean>?
5.DI(Dependency injection)——依賴注入
它與IoC功能是一樣的,當一個類中需要另一個類的對象時,在類的內部為另一個類對象賦值,就是依賴注入
用法:在類中用property進行賦值時,只需要用ref來引用另一個類的對象,這里的引用對象就是另一個bean
依賴注入類:
public?class?Factory {private?Flower?flower;public?Flower getFlower() {return?flower;}public?void?setFlower(Flower?flower) {this.flower?=?flower;}}xml配置文件:?
???<bean?id="factory"?class="com.likui.pojo.Factory"><property?name="flower"?ref="flo2"></property></bean>java中使用方法;
? ? ?Factory?factory=ac.getBean("factory",Factory.class);System.out.println(factory.getFlower().getName());?
總結
以上是生活随笔為你收集整理的JavaWeb学习之路——SSM框架之Spring(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb学习之路——SSM框架之M
- 下一篇: JavaWeb学习之路——SSM框架之S