天柱建設(shè)局網(wǎng)站河南網(wǎng)站關(guān)鍵詞優(yōu)化
第一章:Spring概述、特點(diǎn)、IOC容器、IOC操作bean管理(基于xml方式)
1.Spring是什么?
①Spring是一款主流的java EE 輕量級(jí)開(kāi)源框架。
②廣義的Spring:Spring技術(shù)棧,Spring不再是一個(gè)單純的應(yīng)用框架,而是逐漸發(fā)展成由多個(gè)不同子項(xiàng)目組成的成熟技術(shù)。例如:Spring Framework、SpringMVC,SpringBoot等。
③狹義的Spring:特指Spring Framework。Spring框架是一個(gè)分層的、面向切面編程的java應(yīng)用程序,有兩個(gè)核心模塊Ioc和AOP。
④Ioc:控制反轉(zhuǎn),把創(chuàng)建對(duì)象過(guò)程交給Spring進(jìn)行管理。
⑤AOP:面向切面編程。不修改源代碼進(jìn)行功能的增強(qiáng)。
2.Spring特點(diǎn):
①方便解耦,簡(jiǎn)化開(kāi)發(fā)。
②AOP編程的支持。
③方便程序的測(cè)試。
④方便集成各種優(yōu)秀框架。
⑤降低Java API開(kāi)發(fā)難度。
⑥方便進(jìn)行事務(wù)操作。
3.IOC容器:
(1)什么是IOC:
①控制反轉(zhuǎn),把對(duì)象的創(chuàng)建和對(duì)象之間調(diào)用的過(guò)程,交給spring處理。
②使用IOC的目的:為例耦合度降低。
(2)IOC底層原理:
①XML解析、工廠(chǎng)模式、反射。
②IOC容器底層就是對(duì)象工廠(chǎng)。
③spring提供IOC容器實(shí)現(xiàn)的兩種方式(兩個(gè)接口)
BeanFactory:IOC容器基本實(shí)現(xiàn),是spring內(nèi)部的使用接口,不提供開(kāi)發(fā)人員進(jìn)行使用(加載配置文件的時(shí)候不會(huì)創(chuàng)建對(duì)象,在獲取/使用對(duì)象的時(shí)候才去創(chuàng)建對(duì)象)。
ApplicationContext:BeanFactory接口的子接口,提供更多更強(qiáng)大的功能,一般由開(kāi)發(fā)人員進(jìn)行使用(加載配置文件的時(shí)候就會(huì)把在配置文件中的對(duì)象創(chuàng)建)。
④ApplicationContext接口實(shí)現(xiàn)類(lèi):
FileSystemXmlApplicationContext和ClassPathXmlApplicationContext
4.IOC操作bean管理:
①bean管理指的是兩個(gè)操作:spring創(chuàng)建對(duì)象;spring注入屬性。
②bean管理操作有兩種方式:基于XML配置文件方式實(shí)現(xiàn);基于注解方式實(shí)現(xiàn)。
5.IOC操作bean管理(基于XML方式):
(1)基于XML創(chuàng)建對(duì)象:
<bean id="user" class="spring1.User"></bean>
①在spring配置文件中,使用bean標(biāo)簽,標(biāo)簽里面添加對(duì)應(yīng)屬性,就可以實(shí)現(xiàn)對(duì)象創(chuàng)建。
②在bean標(biāo)簽中有很多屬性,介紹常用屬性:
id屬性:唯一標(biāo)識(shí)
class屬性:類(lèi)的全路徑(包和類(lèi)的路徑)
name屬性:和id屬性一樣,name屬性?xún)?nèi)容可以加特殊符號(hào)
③創(chuàng)建對(duì)象的時(shí)候,默認(rèn)也是執(zhí)行無(wú)參構(gòu)造方法,完成對(duì)象創(chuàng)建。
(2)基于XML方式注入屬性:
①DI:依賴(lài)注入,就是注入屬性。(DI是IOC中一種具體實(shí)現(xiàn),稱(chēng)為依賴(lài)注入,就是注入屬性。注入屬性要在創(chuàng)建對(duì)象的基礎(chǔ)之上注入)
第一種方式:set方式注入。
1.創(chuàng)建屬性和屬性對(duì)應(yīng)的set方法;
//1.創(chuàng)建屬性private String bname;private String bauthor;//2.創(chuàng)建屬性對(duì)應(yīng)的set方法public void setBname(String bname) {this.bname = bname;}public void setBauthor(String bauthor) {this.bauthor = bauthor;}
2.在spring配置文件配置對(duì)象創(chuàng)建,配置屬性注入。
<bean id="book" class="spring1.Book" ><!--使用property完成屬性注入name:類(lèi)里面的屬性名稱(chēng)value:向?qū)傩宰⑷氲闹?span id="ieo6y2aa" class="token operator">--><property name="bname" value="java從入門(mén)到精通"></property><property name="bauthor" value="宋紅康"></property></bean>
@Testpublic void testBook1(){//1.加載spring配置文件ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean1.xml");//2.獲取配置創(chuàng)建的對(duì)象Book book = applicationContext.getBean("book", Book.class);System.out.println(book);book.testDemo();}
第二種注入方式:使用有參數(shù)的構(gòu)造器注入。
1.創(chuàng)建類(lèi),定義屬性,創(chuàng)建屬性對(duì)應(yīng)有參的構(gòu)造方法;
public class Orders {private String oname;private String address;public Orders(String oname, String address) {this.oname = oname;this.address = address;}
}
2.在spring配置文件中配置。
<!--有參構(gòu)造注入屬性--><bean id="orders" class="spring1.Orders"><constructor-arg name="oname" value="電腦"></constructor-arg><constructor-arg name="address" value="中國(guó)"></constructor-arg></bean>
@Testpublic void testOrders(){//1.加載spring配置文件ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean1.xml");//2.獲取配置創(chuàng)建的對(duì)象Orders orders = applicationContext.getBean("orders", Orders.class);System.out.println(orders);orders.orderTest();}