<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
a)把物件建立和物件之間的呼叫過程,交給Spring進行管理
b)使用IOC目的:為了降低耦合度
a)xml解析、工廠模式、反射
a)BeanFactory介面:IOC容器基本實現是Spring內部介面的使用介面,不提供給開發人員進行使用(載入組態檔時候不會建立物件,在獲取物件時才會建立物件。)
b)ApplicationContext介面:BeanFactory介面的子介面,提供更多更強大的功能,提供給開發人員使用(載入組態檔時候就會把在組態檔物件進行建立)推薦使用!
a)Bean管理就是兩個操作:(1)Spring建立物件;(2)Spring注入屬性
<!--1 設定User物件建立--> <bean id="user" class="com.atguigu.spring5.User"></bean>
a)set方式注入
//(1)傳統方式: 建立類,定義屬性和對應的set方法 public class Book { //建立屬性 private String bname; //建立屬性對應的set方法 public void setBname(String bname) { this.bname = bname; } }
<!--(2)spring方式: set方法注入屬性--> <bean id="book" class="com.atguigu.spring5.Book"> <!--使用property完成屬性注入 name:類裡面屬性名稱 value:向屬性注入的值 --> <property name="bname" value="Hello"></property> <property name="bauthor" value="World"></property> </bean>
b)有參建構函式注入
//(1)傳統方式:建立類,構建有參函數 public class Orders { //屬性 private String oname; private String address; //有引數構造 public Orders(String oname,String address) { this.oname = oname; this.address = address; } }
<!--(2)spring方式:有引數構造注入屬性--> <bean id="orders" class="com.atguigu.spring5.Orders"> <constructor-arg name="oname" value="Hello"></constructor-arg> <constructor-arg name="address" value="China!"></constructor-arg> </bean>
c)p名稱空間注入(瞭解即可)
<!--1、新增p名稱空間在組態檔頭部--> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" <!--在這裡新增一行p--> <!--2、在bean標籤進行屬性注入(算是set方式注入的簡化操作)--> <bean id="book" class="com.atguigu.spring5.Book" p:bname="very" p:bauthor="good"> </bean>
<bean id="book" class="com.atguigu.spring5.Book"> <!--(1)null值--> <property name="address"> <null/><!--屬性裡邊新增一個null標籤--> </property> <!--(2)特殊符號賦值--> <!--屬性值包含特殊符號 a 把<>進行跳脫 < > b 把帶特殊符號內容寫到CDATA --> <property name="address"> <value><![CDATA[<<南京>>]]></value> </property> </bean>
a)建立兩個類service和dao類
public class UserService {//service類 //建立UserDao型別屬性,生成set方法 private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void add() { System.out.println("service add..............."); userDao.update();//呼叫dao方法 } } public class UserDaoImpl implements UserDao {//dao類 @Override public void update() { System.out.println("dao update..........."); } }
b)在spring組態檔中進行設定
<!--1 service和dao物件建立--> <bean id="userService" class="com.atguigu.spring5.service.UserService"> <!--注入userDao物件 name屬性:類裡面屬性名稱 ref屬性:建立userDao物件bean標籤id值 --> <property name="userDao" ref="userDaoImpl"></property> </bean> <bean id="userDaoImpl" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>
a)注入屬性-內部bean
(1)一對多關係:部門和員工
一個部門有多個員工,一個員工屬於一個部門(部門是一,員工是多)
(2)在實體類之間表示一對多關係,員工表示所屬部門,使用物件型別屬性進行表示
//部門類 public class Dept { private String dname; public void setDname(String dname) { this.dname = dname; } } //員工類 public class Emp { private String ename; private String gender; //員工屬於某一個部門,使用物件形式表示 private Dept dept; public void setDept(Dept dept) { this.dept = dept; } public void setEname(String ename) { this.ename = ename; } public void setGender(String gender) { this.gender = gender; } }
(3)在spring組態檔中設定
<!--內部bean--> <bean id="emp" class="com.atguigu.spring5.bean.Emp"> <!--設定兩個普通屬性--> <property name="ename" value="Andy"></property> <property name="gender" value="女"></property> <!--設定物件型別屬性--> <property name="dept"> <bean id="dept" class="com.atguigu.spring5.bean.Dept"><!--內部bean賦值--> <property name="dname" value="宣傳部門"></property> </bean> </property> </bean>
b)注入屬性-級聯賦值
<!--方式一:級聯賦值--> <bean id="emp" class="com.atguigu.spring5.bean.Emp"> <!--設定兩個普通屬性--> <property name="ename" value="Andy"></property> <property name="gender" value="女"></property> <!--級聯賦值--> <property name="dept" ref="dept"></property> </bean> <bean id="dept" class="com.atguigu.spring5.bean.Dept"> <property name="dname" value="公關部門"></property> </bean>
//方式二:生成dept的get方法(get方法必須有!!) public Dept getDept() { return dept; }
<!--級聯賦值--> <bean id="emp" class="com.atguigu.spring5.bean.Emp"> <!--設定兩個普通屬性--> <property name="ename" value="jams"></property> <property name="gender" value="男"></property> <!--級聯賦值--> <property name="dept" ref="dept"></property> <property name="dept.dname" value="技術部門"></property> </bean> <bean id="dept" class="com.atguigu.spring5.bean.Dept"> </bean>
1、注入陣列型別屬性 2、注入 List 集合型別屬性 3、注入 Map 集合型別屬性
//(1)建立類,定義陣列、list、map、set 型別屬性,生成對應 set 方法 public class Stu { //1 陣列型別屬性 private String[] courses; //2 list集合型別屬性 private List<String> list; //3 map集合型別屬性 private Map<String,String> maps; //4 set集合型別屬性 private Set<String> sets; public void setSets(Set<String> sets) { this.sets = sets; } public void setCourses(String[] courses) { this.courses = courses; } public void setList(List<String> list) { this.list = list; } public void setMaps(Map<String, String> maps) { this.maps = maps; }
<!--(2)在 spring 組態檔進行設定--> <bean id="stu" class="com.atguigu.spring5.collectiontype.Stu"> <!--陣列型別屬性注入--> <property name="courses"> <array> <value>java課程</value> <value>資料庫課程</value> </array> </property> <!--list型別屬性注入--> <property name="list"> <list> <value>張三</value> <value>小三</value> </list> </property> <!--map型別屬性注入--> <property name="maps"> <map> <entry key="JAVA" value="java"></entry> <entry key="PHP" value="php"></entry> </map> </property> <!--set型別屬性注入--> <property name="sets"> <set> <value>MySQL</value> <value>Redis</value> </set> </property> </bean>
//學生所學多門課程 private List<Course> courseList;//建立集合 public void setCourseList(List<Course> courseList) { this.courseList = courseList; }
<!--建立多個course物件--> <bean id="course1" class="com.atguigu.spring5.collectiontype.Course"> <property name="cname" value="Spring5框架"></property> </bean> <bean id="course2" class="com.atguigu.spring5.collectiontype.Course"> <property name="cname" value="MyBatis框架"></property> </bean> <!--注入list集合型別,值是物件--> <property name="courseList"> <list> <ref bean="course1"></ref> <ref bean="course2"></ref> </list> </property>
<!--第一步:在 spring 組態檔中引入名稱空間 util--> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" <!--新增util名稱空間--> xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!--新增util名稱空間--> <!--第二步:使用 util 標籤完成 list 集合注入提取--> <!--把集合注入部分提取出來--> <!--1 提取list集合型別屬性注入--> <util:list id="bookList"> <value>易筋經</value> <value>九陰真經</value> <value>九陽神功</value> </util:list> <!--2 提取list集合型別屬性注入使用--> <bean id="book" class="com.atguigu.spring5.collectiontype.Book" scope="prototype"> <property name="list" ref="bookList"></property> </bean>
到此這篇關於spring IOC容器管理必須知道的一些操作的文章就介紹到這了,更多相關spring IOC容器管理操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45