日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring入门与常用配置

發布時間:2023/11/30 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring入门与常用配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Spring

?SpringSE/EE開發的一站式框架。

? ? ?一站式框架:有EE開發的每一層解決方案。

    ?WEB SpringMVC

    ? Service SpringBean管理,Spring聲明式事務

    ?DAO SpringJdbc模板,SpringORM模塊

為什么學習Spring

?Spring的入門(IOC

什么IOC?

IOC:?Inversion of Control(控制反轉)

  控制反轉:將對象的創建權反轉給(交給)Spring

下載Spring的開發包

官網:http://spring.io/

?

?docs Spring的開發規范和API

libs Spring的開發的jar和源碼

schema Spring的配置文件的約束

創建web項目,引入jar包

?

創建接口和類

問題:如果底層的實現切換了,需要修改源代碼,能不能不修改程序源代碼對程序進行擴展?

將實現類交給Spring管理

spring的解壓路徑下spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html

?

編寫測試類

編寫userDAO和userDAOImp

userDAO

public interface userDAO {public void save(); }

?userDAOImp

public class userDAOImp implements userDAO {@Overridepublic void save() {System.out.println("userDAOImp執行了......");} }

?設置spring的xml applicationContext.xml? ?可以隨意命名

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--spring入門的配置--><bean id="userDAO" class="spring.learn.userDAOImp"></bean> </beans>

?最后編寫SpringDemo1對功能進行實現

package spring.learn;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringDemo1 {//傳統的調用方式public void demo1(){userDAO userDAO=new userDAOImp();userDAO.save();}//Spring的方式的調用public void demo2(){//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");userDAO userDAO=(userDAO)applicationContext.getBean("userDAO");userDAO.save();}public static void main(String[] args) {SpringDemo1 springDemo1=new SpringDemo1();springDemo1.demo1();springDemo1.demo2();} }

結果顯示

IOCDI*****

IOC:控制反轉,將對象的創建權反轉給了Spring。 DI:依賴注入,前提必須有IOC的環境,Spring管理這個類的時候將類的依賴的屬性注入(設置)進來。 面向對象的時候 依賴 Class A{}Class B{public void xxx(A a){} } 繼承:is a Class A{} Class B extends A{}

Spring的工廠類

Spring工廠類的結構圖

ApplicationContext繼承BeanFactory

    BeanFactory:老版本的工廠類? ? ? ??BeanFactory:調用getBean的時候,才會生成類的實例。

?ApplicationContext:新版本的工廠類

ApplicationContext:加載配置文件的時候,就會將Spring管理的類都實例化。

ApplicationContext有兩個實現類

ClassPathXmlApplicationContext:加載類路徑下的配置文件

FileSystemXmlApplicationContext :加載文件系統下的配置文件

Bean的相關配置

<bean>標簽的id和name的配置

  id :使用了約束中的唯一約束。里面不能出現特殊字符的。

? ? ? ? name :沒有使用約束中的唯一約束(理論上可以出現重復的,但是實際開發不能出現的)。里面可以出現特殊字符。

? ? ? ? ? ?SpringStruts1框架整合的時候

? ? ? ? ? ?<bean name=”/user”?class=””/>

1Bean的生命周期的配置(了解)

? ? ? ? init-method :Bean被初始化的時候執行的方法

  • destroy-method :Bean被銷毀的時候執行的方法(Bean是單例創建,工廠關閉)

Bean的作用范圍的配置(重點)

scope? ? :Bean的作用范圍?

  • singleton:默認的,Spring會采用單例模式創建這個對象。
  • ?prototype:多例模式。(Struts2Spring整合一定會用到)
  • ?request :應用在web項目中,Spring創建這個類以后,將這個類存入到request范圍中。
  • session :應用在web項目中,Spring創建這個類以后,將這個類存入到session范圍中。
  • ?globalsession :應用在web項目中,必須在porlet環境下使用。但是如果沒有這種環境,相對于session
  • ?Spring的Bean實例化方式(了解)

    Bean已經都交給Spring管理,Spring創建這些類的時候,有幾種方式:

    無參構造的方式(默認)

    編寫無參構造類?

    public class Bean1 {public Bean1(){System.out.println("Bean1的無參構造方法執行了......");} } <!--配置無參構造方法--><bean id="bean1" class="spring.learn.demo1.Bean1"></bean>

    實現功能

    public class SpringDemo1 {public static void main(String[] args) {//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Bean1 bean1=(Bean1) applicationContext.getBean("bean1");} }

    靜態工廠實例化方式

    ?配置

    實例工廠實例化的方式

    ?配置

    ?Spring的屬性注入

    構造方法屬性注入

    編寫類

    public class Car {public String name;public double price;public Car(String name,double price){this.name=name;this.price=price;}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", price=" + price +'}';} } <!--構造方法的方式注入--><bean id="car" class="spring.learn.demo2.Car"><constructor-arg name="name" value="寶馬" /><constructor-arg name="price" value="800000" /></bean>

    實現

    public class SpringDemo2 {public static void main(String[] args) {//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Car car=(Car)applicationContext.getBean("car");System.out.println(car.toString());} }

    set方法方式的屬性注入

    public class Car2 {public String name;public double price;public void setName(String name) {this.name = name;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Car2{" +"name='" + name + '\'' +", price=" + price +'}';} }

    ?配置

    <!--Set方法的方式的屬性注入--><bean id="car2" class="spring.learn.demo2.Car2"><property name="name" value="奔馳" /><property name="price" value="10000000000" /></bean>

    ?實現方式

    public class SpringDemo2 {public static void main(String[] args) {//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Car2 car2=(Car2)applicationContext.getBean("car2");System.out.println(car2.toString());} }

    set方法設置對象類型的屬性

    public class Employee {public String name;public Car2 car2;public void setName(String name) {this.name = name;}public void setCar2(Car2 car2) {this.car2 = car2;}@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +", car2=" + car2 +'}';} }

    配置

    <!--Set方法的方式的屬性注入--><bean id="car2" class="spring.learn.demo2.Car2"><property name="name" value="奔馳" /><property name="price" value="10000000000" /></bean><!--Set方法設置對象類型的屬性--><bean id="employee" class="spring.learn.demo2.Employee"><!--Value:設置普通類型的值,ref設置其他類的id或者name--><property name="name" value="zyz" /><property name="car2" ref="car2" /></bean>

    實現

    public class SpringDemo3 {public static void main(String[] args) {//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");Employee employee=(Employee)applicationContext.getBean("employee");System.out.println(employee.toString());} }

    ?P名稱空間的屬性注入(Spring2.5以后)

        通過引入p名稱空間完成屬性的注入:

          寫法:

            普通屬性 p:屬性名=

            對象屬性 p:屬性名-ref=

    ?p名稱空間的引入

    使用p名稱空間

    ?SpEL的屬性注入(Spring3.0以后)

    ? ? ?SpELSpring Expression LanguageSpring的表達式語言。

    ?

    集合類型屬性注入(了解)

    <!-- 注入數組類型 -->

    ?

    import java.util.Arrays;public class CollectionBean {public String arr[];public void setArr(String[] arr) {this.arr = arr;}@Overridepublic String toString() {return "CollectionBean{" +"arr=" + Arrays.toString(arr) +'}';} } <!--注入數組類型--><bean id="collectionBean" class="spring.learn.demo2.CollectionBean"><!--數組類型的--><property name="arr"><list><value>王東</value><value>趙洪</value><value>李冠希</value></list></property></bean> public void arrdemo1(){//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");CollectionBean collectionBean=(CollectionBean)applicationContext.getBean("collectionBean");System.out.println(collectionBean.toString());}

    ?

    ?

    <!--注入list集合-->

    import java.util.List;public class ListBean {public List list;public void setList(List list) {this.list = list;}@Overridepublic String toString() {return "ListBean{" +"list=" + list +'}';} } <!--注入list集合--><bean id="listBean" class="spring.learn.demo2.ListBean"><property name="list"><list><value>王東</value><value>趙洪</value><value>李冠希</value></list></property></bean> public void listdemo1(){//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");ListBean listBean=(ListBean)applicationContext.getBean("listBean");System.out.println(listBean.toString());}

    ?

    注入Set集合

    import java.util.Set;public class SetBean {public Set set;public void setSet(Set set) {this.set = set;}@Overridepublic String toString() {return "SetBean{" +"set=" + set +'}';} } <!--注入Set集合--><bean id="setBean" class="spring.learn.demo2.SetBean"><property name="set"><set><value>aaa</value><value>bbb</value><value>ccc</value></set></property></bean> public void setdemo1(){//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");SetBean setBean=(SetBean)applicationContext.getBean("setBean");System.out.println(setBean.toString());}

    ?

    注入Map集合

    import java.util.Map;public class MapBean {public Map map;public void setMap(Map map) {this.map = map;}@Overridepublic String toString() {return "MapBean{" +"map=" + map +'}';} } <!--注入Map集合--><bean id="mapBean" class="spring.learn.demo2.MapBean"><property name="map"><map><entry key="aaa" value="111"/><entry key="bbb" value="222"/><entry key="ccc" value="333"/></map></property></bean> public void mapdemo1(){//創建Spring的工廠ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");MapBean mapBean=(MapBean)applicationContext.getBean("mapBean");System.out.println(mapBean.toString());}

    ?

    Spring的分模塊開發的配置

    在加載配置文件的時候,加載多個

    ?

    ?

    在一個配置文件中引入多個配置文件

    ?

    轉載于:https://www.cnblogs.com/byczyz/p/11588133.html

    總結

    以上是生活随笔為你收集整理的Spring入门与常用配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。