第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Spring基于XML方式的使用

標(biāo)簽:
Spring

可在其中进行bean标签的配置。

1.1、bean标签的作用

bean标签用于配置被spring容器管理的bean的信息

注意:bean标签配置的bean的创建默认是调用无参数的构造方法,若没有无参构造方法则不能创建成功。

1.2、bean标签属性

示例xml代码如下:

<?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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <bean id="wanger" class="com.luis.dto.Person"></bean>
    
    <bean id="zhangsan" class="com.luis.dto.Person" init-method="init" destroy-method="over"></bean>
    
    <bean id="lisi" class="com.luis.dto.Person" scope="prototype"></bean>
    
    <bean id="lazy" class="com.luis.dto.Person" lazy-init="true"/></beans>
    
    <bean name="address" class="com.luis.dto.Address"></bean></beans>

注意:id和name的区别

Bean标签提供了两种标识Bean的Attribute:id和name

示例代码如下:

 <bean id="person" class="com.luis.dto.Student"></bean>
 <bean name="person" class="com.luis.dto.Teacher"></bean><!-- factory.getBean(“person”)返回的是Teacher对象-->

若置bean的时候并没有声明ID属性,则采用全类限定名作为bean的id,此时称为匿名bean

<bean class="com.learnSpring.hellWorld"/><bean class="com.learnSpring.hellWorld"/><bean class="com.learnSpring.hellWorld"/>

如果存在多个class属性都是一样的匿名的Bean,则根据Spring读取配置文件的顺序生成id。

"com.learnSpring.hellWorld"
"com.learnSpring.hellWorld#0"
"com.learnSpring.hellWorld#1"

1.3、bena标签作用范围

我们可在xml文件中通过bean标签的scope属性指定作用域,其取值区别如下表:

作用域描述
singleton单例模式,singleton是默认的作用域,当定义Bean时没有指定scope配置项,Bean的作用域被默认为singleton。singleton属于单例模式,在整个系统上下文环境中,仅有一个Bean实例。
prototype原型模式,当一个Bean的作用域被定义prototype时,程序每次从IOC容器获取的Bean都是一个新的实例。
requesthttp请求,bean作用于HTTP request生命周期,每个request有通过bean创建的实例。
session会话,bean作用于session生命周期。
global-session全局会话,bean作用于全局的session生命周期。

参考了:https://www.cnblogs.com/best/p/5727935.html

这里主要对单例对象与多例对象进行说明:

2、bean的实例化

bean有三种实例化方式:无参构造、静态工厂、实例工厂

2.1、无参构造

默认情况下会根据无参构造方法进行对象的实例化。

若没有无参构造方法则会创建失败。

<bean id="wanger" class="com.luis.dto.Person"></bean>

2.2、静态工厂

使用静态工厂创建实例,其中:

<bean id="person" class="com.luis.factory.StaticFactory" factory-method="createPerson"/>

2.3、实例工厂

将工厂的创建交给Spring进行,使用工厂bean调用方法创建实例化对象。其中:

<bean id="instancFactory" class="com.luis.factory.PersonFactory"/><bean id="person" factory-bean="instancFactory" factory-method="createPerson"/>

二、DI配置

依赖注入(Dependency Injection)是 spring 框架核心 IoC 的具体实现。依赖指的是bean的属性,包括:简单类型(8种基本类型和String类型)的属性、POJO类型的属性、集合数组类型的属性。我们通过控制反转将实例化对象的交给IoC进行,但创建的对象没有依赖,因而需要Spring维护依赖关系,即依赖注入。

1、依赖注入的方式

1.1、构造方法注入

使用类中的构造函数,给成员变量赋值,,通过在xml文件中的bean进行配置的方式给对象赋值。

构造方法注入涉及的标签:

Spring配置文件xml中的配置如下:

<bean id="zhangsan" class="com.luis.dto.Person">
    <constructor-arg name = "name" value ="张三"></constructor-arg>
    <constructor-arg name = "age" value ="22"></constructor-arg></bean>
<bean id="zhangsan" class="com.luis.dto.Person">
    <constructor-arg index = "0" value ="张三"></constructor-arg>
    <constructor-arg index = "1" value ="22"></constructor-arg></bean>

1.2、set方法注入

set方法注入又分为手动装配方式注入自动装配方式注入

通过bean标签的子标签property来完成,且需要在在类中指定setter方法。

xml方式的示例代码如下:

public class Address {    private String country;    private String city;    public String getCountry() {        return country;
    }    public void setCountry(String country) {        this.country = country;
    }    public String getCity() {        return city;
    }    public void setCity(String city) {        this.city = city;
    }    @Override
    public String toString() {        return "Address [country=" + country + ", city=" + city + "]";
    }

}

Spring配置文件xml-ioc-01.xml中的配置如下:

<bean name="address" class="com.luis.dto.Address">
    <property  name = "country" value ="中国"></property>
    <property  name = "city" value ="西安"></property></bean>

可以简写为:

<bean id="address" class="com.luis.dto.Address" p:country="中国" p:city="西安"></bean>

1.3、p空间名称注入

p名称注入是set方法的一种简写方式,首先需引入p命名空间:

 xmlns:p="http://www.springframework.org/schema/p"

p名称空间的语法:p:属性名 = ""p:属性名-ref = ""

上面的set注入可以简写为:

<bean id="address" class="com.luis.dto.Address" p:country="中国" p:city="西安"></bean>

若对象中有引用对象,则:

<bean name="address" class="com.luis.dto.Address"></bean><bean id="person" class="com.luis.dto.Person" p:pname="田七" p:age="22" p:address-ref="address"/>

2、不同属性依赖注入

2.1、简单类型

<!-- 构造方法注入 --><bean id="lisi" class="com.luis.dto.Person">
      <constructor-arg name = "name" value ="李四"></constructor-arg>
      <constructor-arg name = "age" value ="22"></constructor-arg></bean><!-- 构造方法注入 --><bean id="wangwu" class="com.luis.dto.Person">
    <constructor-arg index = "0" value ="王五"></constructor-arg>
    <constructor-arg index = "1" value ="22"></constructor-arg></bean><!-- set方法注入 --><bean name="address" class="com.luis.dto.Address">
    <property  name = "country" value ="中国"></property>
    <property  name = "city" value ="西安"></property></bean><!-- p空间名称注入 --><bean id="address" class="com.luis.dto.Address" p:country="中国" p:city="西安"></bean>

2.2、引用类型

<bean id="address" class="com.luis.dto.Address">
    <property  name = "country" value ="中国"></property>
    <property  name = "city" value ="西安"></property></bean><!-- 构造方法注入 --><bean id="zhaoliu" class="com.luis.dto.Person">
    <constructor-arg index = "0" value ="赵六"></constructor-arg>
    <constructor-arg index = "1" value ="22"></constructor-arg>
    <constructor-arg index = "2" ref ="address"></constructor-arg></bean><!-- set方法注入 --><bean id="tianqi" class="com.luis.dto.Person">
    <property  name = "name" value ="田七"></property>
    <property  name = "age" value ="22"></property>
    <property  name = "address" ref ="address"></property></bean><!-- p空间名称注入 --><bean id="person" class="com.luis.dto.Person" p:pname="田七" p:age="22" p:address-ref="address"/>

2.3、集合类型

不同的集合类型,注入方式也有所区别:

1、数组或List集合

<bean id="person" class="com.luis.dto.Person">
    <property name="arrs">
        <list>
            <!-- 如果集合内是简单类型,使用value子标签,如果是POJO类型,则使用bean标签 -->
            <value>张三</value>
            <value>李四</value>
            <!-- <bean></bean> -->
        </list>
    </property></bean>

2、Set集合

<property name="sets">
    <set>
        <!-- 如果集合内是简单类型,使用value子标签,如果是POJO类型,则使用bean标签 -->
        <value>张三</value>
        <value>李四</value>
    </set></property>

3、Map集合

<property name="map">
    <map>
        <entry key="张三" value="38"/>
        <entry key="李四" value="38"/>
        <entry key="王五" value="29"/>
    </map></property>

4、Properties集合

<property name="pro">
    <props>
        <prop key="uname">root</prop>
        <prop key="pass">123</prop>
    </props></property>

作者:紫焱

出处:https://www.cnblogs.com/liuyi6/p/10217096.html  

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消