最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring?IOC容器管理必須知道的一些操作(基于XML方式)

 更新時(shí)間:2022年03月02日 11:05:11   作者:來點(diǎn)淦貨  
Spring框架的核心是Spring容器,容器創(chuàng)建對(duì)象,將它們裝配在一起,配置它們并管理它們的完整生命周期,下面這篇文章主要給大家介紹了關(guān)于spring?IOC容器管理必須知道的一些操作,需要的朋友可以參考下

一、IOC容器

? 1、什么是IOC(控制反轉(zhuǎn))

? a)把對(duì)象創(chuàng)建和對(duì)象之間的調(diào)用過程,交給Spring進(jìn)行管理

? b)使用IOC目的:為了降低耦合度

? 2、IOC底層

? a)xml解析、工廠模式、反射

? 3、Spring提供的IOC容器實(shí)現(xiàn)的兩種方式(兩個(gè)接口)

? a)BeanFactory接口:IOC容器基本實(shí)現(xiàn)是Spring內(nèi)部接口的使用接口,不提供給開發(fā)人員進(jìn)行使用(加載配置文件時(shí)候不會(huì)創(chuàng)建對(duì)象,在獲取對(duì)象時(shí)才會(huì)創(chuàng)建對(duì)象。)

? b)ApplicationContext接口:BeanFactory接口的子接口,提供更多更強(qiáng)大的功能,提供給開發(fā)人員使用(加載配置文件時(shí)候就會(huì)把在配置文件對(duì)象進(jìn)行創(chuàng)建)推薦使用!

? 4、ApplicationContext接口的實(shí)現(xiàn)類(具體根據(jù)API文檔查看?)

二、IOC容器-Bean管理

? 1、IOC操作Bean管理

? a)Bean管理就是兩個(gè)操作:(1)Spring創(chuàng)建對(duì)象;(2)Spring注入屬性

? 2、基于XML配置文件創(chuàng)建對(duì)象

<!--1 配置User對(duì)象創(chuàng)建-->
<bean id="user" class="com.atguigu.spring5.User"></bean>

? 3、基于XML方式注入屬性(DI:依賴注入(注入屬性))

? a)set方式注入

//(1)傳統(tǒng)方式: 創(chuàng)建類,定義屬性和對(duì)應(yīng)的set方法
public class Book {
        //創(chuàng)建屬性
        private String bname;

        //創(chuàng)建屬性對(duì)應(yīng)的set方法
        public void setBname(String bname) {
            this.bname = bname;
        }
   }
<!--(2)spring方式: set方法注入屬性-->
<bean id="book" class="com.atguigu.spring5.Book">
    <!--使用property完成屬性注入
        name:類里面屬性名稱
        value:向?qū)傩宰⑷氲闹?
    -->
    <property name="bname" value="Hello"></property>
    <property name="bauthor" value="World"></property>
</bean>

? b)有參構(gòu)造函數(shù)注入

//(1)傳統(tǒng)方式:創(chuàng)建類,構(gòu)建有參函數(shù)
public class Orders {
    //屬性
    private String oname;
    private String address;
    //有參數(shù)構(gòu)造
    public Orders(String oname,String address) {
        this.oname = oname;
        this.address = address;
    }
  }
<!--(2)spring方式:有參數(shù)構(gòu)造注入屬性-->
<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標(biāo)簽進(jìn)行屬性注入(算是set方式注入的簡(jiǎn)化操作)-->
    <bean id="book" class="com.atguigu.spring5.Book" p:bname="very" p:bauthor="good">
    </bean>

? 4、注入空值和特殊符號(hào)

<bean id="book" class="com.atguigu.spring5.Book">
    <!--(1)null值-->
    <property name="address">
        <null/><!--屬性里邊添加一個(gè)null標(biāo)簽-->
    </property>
    
    <!--(2)特殊符號(hào)賦值-->
     <!--屬性值包含特殊符號(hào)
       a 把<>進(jìn)行轉(zhuǎn)義 &lt; &gt;
       b 把帶特殊符號(hào)內(nèi)容寫到CDATA
      -->
        <property name="address">
            <value><![CDATA[<<南京>>]]></value>
        </property>
</bean>

? 5、注入屬性-外部bean

? a)創(chuàng)建兩個(gè)類service和dao類

public class UserService {//service類

    //創(chuàng)建UserDao類型屬性,生成set方法
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add() {
        System.out.println("service add...............");
        userDao.update();//調(diào)用dao方法
    }
}

public class UserDaoImpl implements UserDao {//dao類

    @Override
    public void update() {
        System.out.println("dao update...........");
    }
}

? b)在spring配置文件中進(jìn)行配置

<!--1 service和dao對(duì)象創(chuàng)建-->
<bean id="userService" class="com.atguigu.spring5.service.UserService">
    <!--注入userDao對(duì)象
        name屬性:類里面屬性名稱
        ref屬性:創(chuàng)建userDao對(duì)象bean標(biāo)簽id值
    -->
    <property name="userDao" ref="userDaoImpl"></property>
</bean>
<bean id="userDaoImpl" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>

? 6、基于XML方式注入內(nèi)部bean和級(jí)聯(lián)賦值

? a)注入屬性-內(nèi)部bean

(1)一對(duì)多關(guān)系:部門和員工
一個(gè)部門有多個(gè)員工,一個(gè)員工屬于一個(gè)部門(部門是一,員工是多)
(2)在實(shí)體類之間表示一對(duì)多關(guān)系,員工表示所屬部門,使用對(duì)象類型屬性進(jìn)行表示

//部門類
public class Dept {
    private String dname;
    public void setDname(String dname) {
        this.dname = dname;
    }
}

//員工類
public class Emp {
    private String ename;
    private String gender;
    //員工屬于某一個(gè)部門,使用對(duì)象形式表示
    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配置文件中配置

<!--內(nèi)部bean-->
    <bean id="emp" class="com.atguigu.spring5.bean.Emp">
        <!--設(shè)置兩個(gè)普通屬性-->
        <property name="ename" value="Andy"></property>
        <property name="gender" value="女"></property>
        <!--設(shè)置對(duì)象類型屬性-->
        <property name="dept">
            <bean id="dept" class="com.atguigu.spring5.bean.Dept"><!--內(nèi)部bean賦值-->
                <property name="dname" value="宣傳部門"></property>
            </bean>
        </property>
    </bean>

? b)注入屬性-級(jí)聯(lián)賦值

<!--方式一:級(jí)聯(lián)賦值-->
    <bean id="emp" class="com.atguigu.spring5.bean.Emp">
        <!--設(shè)置兩個(gè)普通屬性-->
        <property name="ename" value="Andy"></property>
        <property name="gender" value="女"></property>
        <!--級(jí)聯(lián)賦值-->
        <property name="dept" ref="dept"></property>
    </bean>
    <bean id="dept" class="com.atguigu.spring5.bean.Dept">
        <property name="dname" value="公關(guān)部門"></property>
    </bean>
 //方式二:生成dept的get方法(get方法必須有?。。?
    public Dept getDept() {
        return dept;
    }
 <!--級(jí)聯(lián)賦值-->
    <bean id="emp" class="com.atguigu.spring5.bean.Emp">
        <!--設(shè)置兩個(gè)普通屬性-->
        <property name="ename" value="jams"></property>
        <property name="gender" value="男"></property>
        <!--級(jí)聯(lián)賦值-->
        <property name="dept" ref="dept"></property>
        <property name="dept.dname" value="技術(shù)部門"></property>
    </bean>
    <bean id="dept" class="com.atguigu.spring5.bean.Dept">
    </bean>

? 7、IOC 操作 Bean 管理——xml 注入集合屬性

1、注入數(shù)組類型屬性 2、注入 List 集合類型屬性 3、注入 Map 集合類型屬性

//(1)創(chuàng)建類,定義數(shù)組、list、map、set 類型屬性,生成對(duì)應(yīng) set 方法
public class Stu {
    //1 數(shù)組類型屬性
    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 配置文件進(jìn)行配置-->
    <bean id="stu" class="com.atguigu.spring5.collectiontype.Stu">
        <!--數(shù)組類型屬性注入-->
        <property name="courses">
            <array>
                <value>java課程</value>
                <value>數(shù)據(jù)庫課程</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>

? 8、在集合里面設(shè)置對(duì)象類型值

  //學(xué)生所學(xué)多門課程
    private List<Course> courseList;//創(chuàng)建集合
    public void setCourseList(List<Course> courseList) {
        this.courseList = courseList;
    }
    <!--創(chuàng)建多個(gè)course對(duì)象-->
    <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集合類型,值是對(duì)象-->
       <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 標(biāo)簽完成 list 集合注入提取-->
<!--把集合注入部分提取出來-->
 <!--1 提取list集合類型屬性注入-->
    <util:list id="bookList">
        <value>易筋經(jīng)</value>
        <value>九陰真經(jīng)</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>

總結(jié)

到此這篇關(guān)于spring IOC容器管理必須知道的一些操作的文章就介紹到這了,更多相關(guān)spring IOC容器管理操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java對(duì)接微信支付全過程

    Java對(duì)接微信支付全過程

    本文主要介紹了Java對(duì)接微信支付全過程,涵蓋注冊(cè)商戶、生成預(yù)支付訂單、處理回調(diào)和查詢訂單狀態(tài)等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • 如何用注解的方式實(shí)現(xiàn)Mybatis插入數(shù)據(jù)時(shí)返回自增的主鍵Id

    如何用注解的方式實(shí)現(xiàn)Mybatis插入數(shù)據(jù)時(shí)返回自增的主鍵Id

    這篇文章主要介紹了如何用注解的方式實(shí)現(xiàn)Mybatis插入數(shù)據(jù)時(shí)返回自增的主鍵Id,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 深入詳解Java中synchronized鎖升級(jí)的套路

    深入詳解Java中synchronized鎖升級(jí)的套路

    synchronized鎖是啥?鎖其實(shí)就是一個(gè)對(duì)象,隨便哪一個(gè)都可以,Java中所有的對(duì)象都是鎖,換句話說,Java中所有對(duì)象都可以成為鎖。本文我們主要來聊聊synchronized鎖升級(jí)的套路,感興趣的可以收藏一下
    2023-04-04
  • Java并發(fā)編程this逃逸問題總結(jié)

    Java并發(fā)編程this逃逸問題總結(jié)

    本篇文章給大家詳細(xì)分析了Java并發(fā)編程this逃逸的問題分享,對(duì)此有需要的朋友參考下。
    2018-02-02
  • SpringRetry重試框架的具體使用

    SpringRetry重試框架的具體使用

    在項(xiàng)目開發(fā)中,經(jīng)常會(huì)遇到需要重試的地方。本文主要介紹了SpringRetry重試框架的具體使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺談hibernate中多表映射關(guān)系配置

    淺談hibernate中多表映射關(guān)系配置

    下面小編就為大家?guī)硪黄獪\談hibernate中多表映射關(guān)系配置。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 全面解讀Spring Boot 中的Profile配置體系

    全面解讀Spring Boot 中的Profile配置體系

    配置體系是基于 Spring Boot 框架開發(fā)應(yīng)用程序的基礎(chǔ),而自動(dòng)配置也是該框架的核心功能之一。本文梳理Spring Boot 中的Profile配置體系的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • 一文詳解Java線程中的安全策略

    一文詳解Java線程中的安全策略

    Java中的線程到底有哪些安全策略呢?這篇文章將詳細(xì)為大家分析一下。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-05-05
  • Java 正確終止線程的方法

    Java 正確終止線程的方法

    這篇文章主要介紹了Java 正確終止線程的方法,幫助大家更好的理解和學(xué)習(xí)java 多線程的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-12-12
  • SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解

    SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解

    這篇文章主要介紹了SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解,Hystrix是一個(gè)用于處理分布式系統(tǒng)的延遲和容錯(cuò)的開源庫,在分布式系統(tǒng)里,許多依賴不可避免的會(huì)調(diào)用失敗,比如超時(shí)、異常等,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

兰溪市| 平阳县| 犍为县| 台山市| 闽清县| 英德市| 绥宁县| 南部县| 江川县| 永吉县| 承德市| 镇安县| 宁蒗| 象山县| 雷山县| 金寨县| 呼和浩特市| 息烽县| 和林格尔县| 郁南县| 子长县| 佛坪县| 宁国市| 景谷| 栾城县| 大同市| 北川| 皋兰县| 苏尼特左旗| 齐齐哈尔市| 岗巴县| 龙川县| 株洲县| 四平市| 灵川县| 榆林市| 杭锦旗| 建德市| 阿拉尔市| 抚顺市| 蚌埠市|