當(dāng)前位置:
首頁 >
spring 入门 1
發(fā)布時間:2023/12/31
28
豆豆
生活随笔
收集整理的這篇文章主要介紹了
spring 入门 1
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Spring介紹
Spring一站式框架
Spring搭建
1.導(dǎo)包
2.創(chuàng)建一個對象
3.書寫配置注冊對象到容器
位置任意(建議放到src下)
配置文件名任意(建議applicationContext.xml)
導(dǎo)入schema約束
注冊對象到容器(applicationContext.xml配置文件)
4、編寫測試類
@Test public void name() {ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");User bean = ac.getBean(User.class);System.out.println(bean); }Spring 概念
1.思想
IOC Inverse of Control 控制反轉(zhuǎn)
DI Dependency Injection 依賴注入
實(shí)現(xiàn)IOC思想需要DI支持 注入方式:set方法注入構(gòu)造方法注入字段注入 注入類型:值類型注入 8大基本數(shù)據(jù)類型引用類型注入 將依賴帶下注入2.applicationContext&BeanFactory
BeanFactory接口(在資源匱乏的環(huán)境可以使用BeanFactory,基本用不到) spring原始接口.針對原始接口的實(shí)現(xiàn)類功能較為單一 BeanFactory接口實(shí)現(xiàn)類的容器.特點(diǎn)是每次在獲得對象時才會創(chuàng)建對象 ApplicationContext 每次容器啟動時就會創(chuàng)建容器中配置的所有對象.并提供更多功能 叢類路徑下加載配置文件:ClassPathXmlApplicationContext(常用) 從硬盤絕對路徑下加載配置件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")spring配置詳解
1.Bean元素
<!-- Bean元素:使用該元素描述需要spring容器管理的對象class屬性:被管理對象的完整類名.name屬性:給被管理的對象起個名字.獲得對象時根據(jù)該名稱獲得對象. 可以重復(fù).可以使用特殊字符.id屬性: 與name屬性一模一樣. 名稱不可重復(fù).不能使用特殊字符.結(jié)論: 盡量使用name屬性.scope屬性:singleton(默認(rèn)值):單例對象.被標(biāo)識為單例的對象在spring容器中只會存在一個實(shí)例prototype:多例原型.被標(biāo)識為多例的對象,每次再獲得才會創(chuàng)建.每次創(chuàng)建都是新的對象.整合struts2時,ActionBean必須配置為多例的.request:web環(huán)境下.對象與request生命周期一致.session:web環(huán)境下,對象與session生命周期一致.生命周期屬性:init-method:配置一個方法作為生命周期初始化方法.spring會在對象創(chuàng)建之后立即調(diào)用.destroy-method:配置一個方法作為生命周期的銷毀方法.spring容器在關(guān)閉并銷毀所有容器中的對象之前調(diào)用.--> <bean name="user"class="cn.zhli13.bean.User"scope="prototype"init-method="init"destroy-method="beforeDestory"></bean>spring創(chuàng)建對象的方式
1.空參構(gòu)造方式
<bean name="user" class="cn.zhli13.bean.User"></bean>2.靜態(tài)工廠(了解)
public class UserFactory{public static User createUser(){return new User();} } <bean name="user2" class="cn.zhli13.bean.UserFactory" factory-method="createUser"></bean>3.實(shí)例工廠(了解)
public User createUser2(){return new User(); } <bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean> <!--創(chuàng)建工場實(shí)例--> <bean name="userFactory" class="cn.zhli13.bean.UserFactory"></bean>4.多模塊配置
<!--主配置文件導(dǎo)入其他spring配置文件--> <import resource="cn/zhli13/xxxxx/xxx/applicationContext.xml" />spring屬性注入
1.注入方式
<!-- set方式注入: --> <bean name="user" class="cn.zhli13.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.zhli13.bean.Car" ><property name="name" value="蘭博基尼" ></property><property name="color" value="黃色" ></property> </bean><!-- 構(gòu)造函數(shù)注入 --> <bean name="user2" class="cn.zhli13.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> <!-- 復(fù)雜類型注入 --> <bean name="cb" class="cn.zhli13.bean.CollectionBean" ><!-- 如果數(shù)組中只準(zhǔn)備注入一個值(對象),直接使用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中只準(zhǔn)備注入一個值(對象),直接使用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>總結(jié)
以上是生活随笔為你收集整理的spring 入门 1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZHS16GBK的数据库导入到字符集为A
- 下一篇: mybatis-plus sql注入原理