日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

spring框架学习(一)入门

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

spring 入門--IOC

?1.導(dǎo)入jar包

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

2.java.lang.IllegalArgumentException

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

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

Spring容器中Bean的生命周期

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

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

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

? 第三步:添加Junit測(cè)試

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

2.配置詳解-三種對(duì)象創(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)實(shí)例工廠

<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("實(shí)例工廠創(chuàng)建User");return new User();} }

3.Bean元素進(jìn)階——scope屬性?

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

1)??singleton(默認(rèn)值):scope="singleton" ,單例對(duì)象.被標(biāo)識(shí)為單例的對(duì)象在spring容器中只會(huì)存在一個(gè)實(shí)例

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

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

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

4.Bean元素進(jìn)階——生命周期屬性

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

測(cè)試

@Test //測(cè)試生命周期方法 public void fun5(){ //1 創(chuàng)建容器對(duì)象 ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("cn/mf/b_create/applicationContext.xml"); //2 向容器"要"user對(duì)象 User u = (User) ac.getBean("user"); //3 打印user對(duì)象 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 "><!-- 主配置中導(dǎo)入其他spring配置文件 --><import resource="cn/mf/b_create/applicationContext.xml"/> </beans>

6.spring屬性注入

1)set方法注入

<bean name="user" class="cn.mf.bean.User" ><!--值類型注入: 為User對(duì)象中名為name的屬性注入tom作為值 --><property name="name" value="tom" ></property><property name="age" value="18" ></property><!-- 引用類型注入: 為car屬性注入下方配置的car對(duì)象 --><property name="car" ref="car" ></property></bean> <!-- 將car對(duì)象配置到容器中 --><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)復(fù)雜類型注入(了解)

<bean name="cb" class="cn.mf.c_injection.CollectionBean" ><!-- 如果數(shù)組中只準(zhǔn)備注入一個(gè)值(對(duì)象),直接使用value|ref即可 <property name="arr" value="tom" ></property>--><!-- array注入,多個(gè)元素注入 --><property name="arr"><array><value>tom</value><value>jerry</value><ref bean="user4" /></array></property><!-- 如果List中只準(zhǔn)備注入一個(gè)值(對(duì)象),直接使用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框架学习(一)入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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