Spring_总结_03_装配Bean(三)之XML配置

简介: 一、前言 本文承接上一节:Spring_总结_03_装配Bean(二)之Java配置 上一节说到,当需要显示配置时,首选类型安全并且比XML更强大Java配置。 那什么时候使用XML配置呢? (1)维护已有XML配置 (2)想使用便利的XML命名空间,并且在JavaConfig中没有同样的实现。

一、前言

本文承接上一节:Spring_总结_03_装配Bean(二)之Java配置

上一节说到,当需要显示配置时,首选类型安全并且比XML更强大Java配置。

那什么时候使用XML配置呢?

(1)维护已有XML配置

(2)想使用便利的XML命名空间,并且在JavaConfig中没有同样的实现。

 

二、引入schema

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


</beans>
View Code

用来装配bean的最基本的XML元素包含在spring-beans模式中,在上面这个XML文件中,它被定义为根命名空间。

<beans>是该模式中的一个元素,它是所有Spring配置文件的根元素。

 

三、声明Bean

    <bean id="compactDisc" class="soundsystem.SgtPeppers"></bean>

id :指定bean的名字,以便于被其他bean引用。

class : 全类名,指定创建bean的Class

 

注:

(1)通过xml配置的方式,我们不再直接负责创SgtPeppers,而在JavaConfig中,我们却是需要这样做的。当Spring发现 <bean>元素时,他会调用默认构造器来创建bean。

(2)将bean的类型以字符串的形式设置在class属性中,不便于重构。(如修改类名时)

 

 

四、构造器注入

注入bean有两种方式:

(1)构造器注入

(2)属性注入

 

这两种方式如何选择:强依赖选择构造器注入,可选性依赖使用属性注入。

 

1. constructor-arg

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="compactDisc" class="soundsystem.SgtPeppers"></bean>

    <bean id="cdPlayer"    class="soundsystem.CDPlayer">
        <constructor-arg ref="compactDisc" />
    </bean>
    
</beans>
View Code

 

2. c-命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="compactDisc" class="soundsystem.SgtPeppers"></bean>
  
    <bean id="cdPlayer" class="soundsystem.CDPlayer"
          c:cd-ref="compactDisc"/>
    
    <bean id="cdPlayer2" class="soundsystem.CDPlayer"
          c:_0-ref="compactDisc"/>


</beans>
View Code

(1)构造器参数名

"c:"为命名空间

“-ref”表示注入引用

“cd”为构造器参数名

 

(2)构造器参数索引

“_i”为第i个参数。

表示为第i个参数注入bean

 

3. 字面量

将字面量注入到构造器中

(1)constructor-arg

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="blankDisc" class="soundsystem.BlankDisc">
        <constructor-arg value="字面量"/>
    </bean>



</beans>
View Code

 

(2)构造器参数名

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="blankDisc" class="soundsystem.BlankDisc"
          c:_title="标题"
          c:_author="作者" />

</beans>
View Code

 

(3)构造器参数索引

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="blankDisc" class="soundsystem.BlankDisc"
          c:_0="标题"
          c:_1="作者" />

</beans>
View Code

 

4. 集合

BlankDisc

public class BlankDisc  implements CompactDisc{
    private String title;
    private String author;
    private List<String> tracks;

    public BlankDisc(String title, String author, List<String> tracks) {
        this.title = title;
        this.author = author;
        this.tracks = tracks;
    }

    public void play(){
        System.out.print("aaaaaaaa");
    }
}
View Code

 

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="compactDisc" class="soundsystem.BlankDisc">
        <constructor-arg value="标题"/>
        <constructor-arg value="作者"/>
        <constructor-arg>
            <list>
                <value>111111111</value>
                <value>222222222</value>
                <value>333333333</value>
                <value>444444444</value>
                <value>555555555</value>
            </list>
        </constructor-arg>
    </bean>

    <bean id="compactDisc2" class="soundsystem.BlankDisc">
        <constructor-arg value="标题"/>
        <constructor-arg value="作者"/>
        <constructor-arg>
            <list>
                <ref bean="compactDisc" />
                <ref bean="compactDisc" />
                <ref bean="compactDisc" />
                <ref bean="compactDisc" />
            </list>
        </constructor-arg>
    </bean>


    <bean id="compactDisc3" class="soundsystem.BlankDisc">
        <constructor-arg value="标题"/>
        <constructor-arg value="作者"/>
        <constructor-arg>
            <set>
                <value>111111111</value>
                <value>222222222</value>
                <value>333333333</value>
                <value>444444444</value>
                <value>555555555</value>
            </set>
        </constructor-arg>
    </bean>

</beans>
View Code

 

五、属性注入

1.注入引用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="compactDisc" class="soundsystem.CompactDisc" />

    <bean id="cdPlayer" class="soundsystem.CDPalyer" >
        <property name="compactDisc" ref="compactDisc" />
    </bean>

    <bean id="cdPlayer2" class="soundsystem.CDPalyer"
          p:compactDisc-ref="compactDisc"/>

</beans>
View Code

 

2.注入字面量

BlankDisc

public class BlankDisc  implements CompactDisc{
    private String title;
    private String author;
    private List<String> tracks;

    public void setTitle(String title) {
        this.title = title;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public void setTracks(List<String> tracks) {
        this.tracks = tracks;
    }

    public void play(){
        System.out.print("aaaaaaaa");
    }
}
View Code

 

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/plugin"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/plugin http://www.springframework.org/schema/plugin/spring-plugin.xsd">

    <!--1.空属性-->
    <bean id="reallyBlankDisc" class="soundsystem.BlankDisc" />

    <!--2.注入list-->
    <bean id="compactBlankDisc" class="soundsystem.BlankDisc" >
        <property name="title" value="标题"/>
        <property name="author" value="作者"/>
        <property name="tracks" >
            <list>
                <value>11111111</value>
                <value>11111111</value>
                <value>11111111</value>
                <value>11111111</value>
            </list>
        </property>

    </bean>


    <!--3.p命名空间装配引用与装配字面量的唯一区别在于是否带有 -ref
          p命名空间不能用来装配集合
    -->
    <bean id="compactBlankDisc2" class="soundsystem.BlankDisc" 
          p:title="标题"
          p:author="作者">
        <property name="tracks" >
            <list>
                <value>11111111</value>
                <value>11111111</value>
                <value>11111111</value>
                <value>11111111</value>
            </list>
        </property>
    </bean>

    <!--4.<util:list>会创建一个列表bean -->
    <util:list id="tracklist">
        <value>1111111111</value>
        <value>1111111111</value>
        <value>1111111111</value>
        <value>1111111111</value>
    </util:list>
    <bean id="compactBlankDisc3" class="soundsystem.BlankDisc"
          p:title="标题"
          p:author="作者"
          p:tracks-ref="tracklist" />
</beans>
View Code

 

目录
相关文章
|
4天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
114 73
|
1月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
61 0
|
5天前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
4天前
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
|
4天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
4天前
|
Java Spring
【Spring配置】创建yml文件和properties或yml文件没有绿叶
本文主要针对,一个项目中怎么创建yml和properties两种不同文件,进行配置,和启动类没有绿叶标识进行解决。
|
12天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
58 14
|
10天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
44 6
|
11天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
64 3
|
1月前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
40 1