领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

Spring的装配方式xml

nixiaole 2024-11-23 20:31:27 知识剖析 14 ℃

装配Bean

在大部分场景下,我们会使用ApplicationContext的具体实现类,因为对应的Spring IOC容器功能相对强大,而在Spring中提供了三种方法进行配置:

  • 在XML中显示配置
  • 在Java的接口和类中实现配置
  • 隐式Bean的发现机制和自动装配原则

一般地,应该尽可能地使用自动装配的机制。显式配置越少越好。如果必须要显式配置bean时,比如源码不是自己来维护的,而是当你需要为这些代码配置bean的时候,也推荐使用JavaConfig。除非想要使用XML命名空间,并且在JavaConfig中没有同样的实现时,才应该使用XML。

创建实例

创建一个maven项目,导入主要的依赖,pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="Maven - Page Not Found"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="Maven - Page Not Found http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hs.spring</groupId>
    <artifactId>spring5-demo1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- org.springframework " spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.3</version>
        </dependency>

        <!-- org.springframework " spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.3</version>
        </dependency>

        <!-- org.springframework " spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.3</version>
        </dependency>

        <!-- org.springframework " spring-expression -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.3.3</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>


通过xml配置装配Bean

实现自动装配,bean标签属性autowire,配置自动装配。autowire属性常用两个值:

  • byName:根据属性名称注入
  • byType:根据属性类型注入


通过beans.xml配置文件进行配置:

<bean id="dept" class="com.hs.spring.pojo.Dept" autowire="byType">
</bean>

<bean id="emp" class="com.hs.spring.pojo.Emp">
</bean>

表示根据类型来实现装配,但是有一个问题,如果有两个类型相同的会有问题。


使用实例

使用xml装配bean,需要配置一个xml配置文件,如下:

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

    <bean id="userService" class="com.hs.spring.UserService">
    </bean>
</beans>

编写一个class类:

package com.hs.spring;

public class UserService {

    public void addUser(){
        System.out.println("添加一个用户");
    }
}

测试通过spring获取对象:

import com.hs.spring.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpring5 {

    @Test
    public void testAdd(){
        //加载Spring的配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        //获取配置创建的对象
        UserService userService = context.getBean("userService",UserService.class);
        //执行方法
        userService.addUser();
    }
}

Tags:

最近发表
标签列表