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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring框架学习(一)入门

發(fā)布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring框架学习(一)入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

spring 入門--IOC

?1.導入jar包

? 4 + 1 ?4個核心(beanscorecontextexpression+ 1個依賴(commons-loggins...jar

2.java.lang.IllegalArgumentException

? ? 右鍵項目“Properties”,在彈出的“Properties”窗口左側(cè),單擊“Project Facets”,打開“Project Facets”頁面。

? ? 在頁面中的“Java”下拉列表中,務必使編譯環(huán)境和運行環(huán)境一致,即可解決。

Spring容器中Bean的生命周期

1.instantiate bean對象實例化
2.populate properties 封裝屬性
3.如果Bean實現(xiàn)BeanNameAware 執(zhí)行 setBeanName
4.如果Bean實現(xiàn)BeanFactoryAware 或者 ApplicationContextAware 設(shè)置工廠 setBeanFactory 或者上下文對象 setApplicationContext
5.如果存在類實現(xiàn) BeanPostProcessor(后處理Bean) ,執(zhí)行postProcessBeforeInitialization
6.如果Bean實現(xiàn)InitializingBean 執(zhí)行 afterPropertiesSet
7.調(diào)用<bean init-method="init"> 指定初始化方法 init
8.如果存在類實現(xiàn) BeanPostProcessor(處理Bean) ,執(zhí)行postProcessAfterInitialization
9.執(zhí)行業(yè)務處理
10.如果Bean實現(xiàn) DisposableBean 執(zhí)行 destroy
11.調(diào)用<bean destroy-method="customerDestroy"> 指定銷毀方法 customerDestroy

實戰(zhàn)總結(jié)

1.對象交于Spring創(chuàng)建

? 第一步:添加UserInfo

package cn.mf.bean;public class UserInfo {private String name;private Integer age;private Car car;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}@Overridepublic String toString() {return "UserInfo [name=" + name + ", age=" + age + ", car=" + car+ ", getName()=" + getName() + ", getAge()=" + getAge()+ ", getCar()=" + getCar() + "]";} }

? 第二步:添加applicationContext.xml

<?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 "><!-- 將User對象交給spring容器管理 --><!-- Bean元素:使用該元素描述需要spring容器管理的對象class屬性:被管理對象的完整類名.name屬性:給被管理的對象起個名字.獲得對象時根據(jù)該名稱獲得對象. 可以重復.可以使用特殊字符.id屬性: 與name屬性一模一樣. 名稱不可重復.不能使用特殊字符.結(jié)論: 盡量使用name屬性.--><bean name="UserInfo" class="cn.mf.bean.UserInfo" ></bean> </beans>

? 第三步:添加Junit測試

@Testpublic void fun1(){//1 創(chuàng)建容器對象ApplicationContext ac = new ClassPathXmlApplicationContext("cn/mf/a_hello/applicationContext.xml");//2 向容器"要"UserInfo對象UserInfo u = ((UserInfo) ac.getBean("UserInfo"));//3 打印user對象 System.out.println(u);}

2.配置詳解-三種對象創(chuàng)建方式

1)空參構(gòu)造方式

<bean name="UserInfo" class="cn.mf.bean.User" ></bean>

2)靜態(tài)工廠

<bean name="user2" class="cn.mf.b_create.UserFactory" factory-method="createUser" ></bean> public class UserFactory {public static User createUser(){System.out.println("靜態(tài)工廠創(chuàng)建User");return new User();} }

3)實例工廠

<bean name="user3" factory-bean="userFactory" factory-method="createUser2" ></bean> <bean name="userFactory" class="cn.mf.b_create.UserFactory" ></bean> package cn.mf.b_create; import cn.mf.bean.User;public class UserFactory {public User createUser2(){System.out.println("實例工廠創(chuàng)建User");return new User();} }

3.Bean元素進階——scope屬性?

<bean name="UserInfo" class="cn.mf.bean.UserInfo" scope="singleton"></bean>

1)??singleton(默認值):scope="singleton" ,單例對象.被標識為單例的對象在spring容器中只會存在一個實例

2) ?prototype:scope="prototype" ,多例原型.被標識為多例的對象,每次再獲得才會創(chuàng)建.每次創(chuàng)建都是新的對象.整合struts2時,ActionBean必須配置為多例的.

3) ?prototype:scope="request" ,request:web環(huán)境下.對象與request生命周期一致.(了解)

4) ?prototype:scope="session" ,session:web環(huán)境下,對象與session生命周期一致.(了解)

4.Bean元素進階——生命周期屬性

1)init-method="init":配置一個方法作為生命周期初始化方法.spring會在對象創(chuàng)建之后立即調(diào)用. 2)destroy-method="destory":配置一個方法作為生命周期的銷毀方法.spring容器在關(guān)閉并銷毀所有容器中的對象之前調(diào)用. <bean name="user" class="cn.mf.bean.User" init-method="init" destroy-method="destory" ></bean>

測試

@Test //測試生命周期方法 public void fun5(){ //1 創(chuàng)建容器對象 ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("cn/mf/b_create/applicationContext.xml"); //2 向容器"要"user對象 User u = (User) ac.getBean("user"); //3 打印user對象 System.out.println(u); //關(guān)閉容器,觸發(fā)銷毀方法 ac.close();}

5.模塊化配置

<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 "><!-- 主配置中導入其他spring配置文件 --><import resource="cn/mf/b_create/applicationContext.xml"/> </beans>

6.spring屬性注入

1)set方法注入

<bean name="user" class="cn.mf.bean.User" ><!--值類型注入: 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom" ></property><property name="age" value="18" ></property><!-- 引用類型注入: 為car屬性注入下方配置的car對象 --><property name="car" ref="car" ></property></bean> <!-- 將car對象配置到容器中 --><bean name="car" class="cn.mf.bean.Car" ><property name="name" value="蘭博基尼" ></property><property name="color" value="黃色" ></property></bean>

2)構(gòu)造函數(shù)注入

<bean name="user2" class="cn.mf.bean.User" ><!-- name屬性: 構(gòu)造函數(shù)的參數(shù)名 --><!-- index屬性: 構(gòu)造函數(shù)的參數(shù)索引 --><!-- type屬性: 構(gòu)造函數(shù)的參數(shù)類型--><constructor-arg name="name" index="0" type="java.lang.Integer" value="999" ></constructor-arg><constructor-arg name="car" ref="car" index="1" ></constructor-arg> </bean>

3)p名稱空間注入(了解)

<bean name="user3" class="cn.mf.bean.User" p:name="jack" p:age="20" p:car-ref="car"> </bean>

4)spel注入(了解)

<bean name="user4" class="cn.mf.bean.User" ><property name="name" value="#{user.name}" ></property><property name="age" value="#{user3.age}" ></property><property name="car" ref="car" ></property> </bean>

5)復雜類型注入(了解)

<bean name="cb" class="cn.mf.c_injection.CollectionBean" ><!-- 如果數(shù)組中只準備注入一個值(對象),直接使用value|ref即可 <property name="arr" value="tom" ></property>--><!-- array注入,多個元素注入 --><property name="arr"><array><value>tom</value><value>jerry</value><ref bean="user4" /></array></property><!-- 如果List中只準備注入一個值(對象),直接使用value|ref即可 <property name="list" value="jack" ></property>--><property name="list" ><list><value>jack</value><value>rose</value><ref bean="user3" /></list></property><!-- map類型注入 --><property name="map" ><map><entry key="url" value="jdbc:mysql:///crm" ></entry><entry key="user" value-ref="user4" ></entry><entry key-ref="user3" value-ref="user2" ></entry></map> </property><!-- prperties 類型注入 --><property name="prop" ><props><prop key="driverClass">com.jdbc.mysql.Driver</prop><prop key="userName">root</prop><prop key="password">1234</prop></props></property> </bean>

?

轉(zhuǎn)載于:https://www.cnblogs.com/cnki/p/6537119.html

總結(jié)

以上是生活随笔為你收集整理的spring框架学习(一)入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。