Spring framework Day06:依赖注入示例

前言

属性值注入是Spring框架的核心功能之一,它可以帮助我们将依赖的对象或配置信息注入到Bean中,从而完成对象的创建和初始化。

一、属性值注入

1、新建一个项目,结构如下

Spring framework Day06:依赖注入示例_第1张图片

2、导入 spring 依赖  
 
    
    
        
        
            org.springframework
            spring-context
            5.3.23
        
 
        
            ch.qos.logback
            logback-classic
            1.4.5
        
 
 
    
 3、新建一个 User 类
@Data
public class User {

    private String name;
    private Integer age;
    private Set tels;
    private List address;
    private Map card;

}

上述代码是一个Java类 User,其中使用了Lombok库的 @Data 注解,它自动生成了一些通用的方法,如toString()、equals()、hashCode()等。这样可以简化代码,避免手动编写这些重复且繁琐的方法。

在 User 类中,定义了以下属性:

  • name:表示用户的姓名,类型为 String。
  • age:表示用户的年龄,类型为 Integer。
  • tels:表示用户的电话号码集合,类型为 Set
  • address:表示用户的地址列表,类型为 List
  • card:表示用户的身份证信息,类型为 Map,使用键值对来存储身份证号码和对应的姓名。

通过使用Lombok的 @Data 注解,我们无需再手动编写属性的Getter和Setter方法,它们会被自动生成。此外,还会生成其他常用方法,如equals()、hashCode()、toString()等,以及一个全参的构造函数。使用Lombok可以大大简化代码,并提高开发效率。

需要注意的是,使用Lombok时,我们需要在IDE中安装并启用Lombok插件,以便正确识别和处理注解。

4、 在 resources 下新建一个 spring 的 xml 文件 beans.xml,在配置文件中完成 Bean 的装配



    
    
        
        
        
        
        
            
                广州
                珠海
            
        

        
        
            
                12323451233
                13289091999
            
        

        
        
            
                
                
            
        

    


这段代码是一个Spring的配置文件,在该配置文件中定义了一个名为 "user" 的Bean,并设置了它的各个属性。

解析该配置文件的结构如下:

  • :XML声明,指定XML的版本和编码方式。
  • :根元素,表示一个Spring配置文件。
  • xmlns="http://www.springframework.org/schema/beans" 和 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance":定义了XML命名空间,用于引入Spring的XML schema。
  • xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd":指定XML schema的位置,这里引用的是Spring beans的schema。
  • :定义了一个名为 "user" 的Bean,其类为 "edu.nf.ch06.User"。
  • :为 "user" Bean 的属性 "name" 设置值为 "user1"。
  • :为 "user" Bean 的属性 "age" 设置值为 18。
  • ...:为 "user" Bean 的属性 "address" 设置一个包含两个值的列表。
  • ...:为 "user" Bean 的属性 "tels" 设置一个包含两个值的集合。
  • ...:为 "user" Bean 的属性 "card" 设置一个包含两个键值对的映射。
  • :结束 "user" Bean 的定义。
  • :配置文件的结束。

通过这样的配置文件,我们可以将属性值注入到Bean中,完成对象的创建和初始化。在Spring应用程序中,通常会使用一个容器(如ApplicationContext)来读取和解析这样的配置文件,并管理Bean的生命周期和依赖关系。

 5、测试

@Slf4j
public class Main {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user = context.getBean(User.class);
        log.info("姓名:" + user.getName());
        log.info("年龄:" + user.getAge());
        user.getAddress().forEach(log::info);
        user.getTels().forEach(log::info);
        user.getCard().forEach((k, v) -> log.info(k + ":" + v));

    }

}

测试结果

 二、属性值注入的好处

属性值注入具有如下好处:

  1. 解耦合:通过属性值注入,我们可以将需要注入的对象或配置信息与依赖它们的Bean进行解耦。这样,在修改被注入的对象或配置时,不需要修改依赖它们的Bean,只需修改注入配置即可。这种解耦合的设计使得系统更加灵活和可维护。

  2. 可配置性:属性值注入使得配置更加灵活和可配置化。我们可以通过外部配置文件(如XML、YAML、属性文件等)来定义需要注入的属性值,而不需要修改Java代码。这样,在不同环境下,我们只需修改配置文件中的属性值,而无需重新编译和部署代码。

  3. 便于测试:属性值注入使得测试变得更加容易。我们可以在测试环境中使用不同的属性值进行注入,以验证系统在不同情况下的行为。同时,我们也可以通过注入Mock对象来模拟复杂的依赖关系,从而更方便地进行单元测试和集成测试。

  4. 可扩展性:属性值注入使得系统更易于扩展。当需要添加新的依赖对象时,我们只需在配置文件中添加对应的属性注入配置即可,而不需要修改原有的代码。这种松耦合的设计使得系统更加可维护和可扩展。

总之,属性值注入通过解耦合、可配置性、便于测试和可扩展性等方面的优势,使得系统更加灵活、可维护且易于测试。它是构建松耦合、可配置和可扩展的应用程序的重要方式之一。

三、gitee 案例

案例完整地址:https://gitee.com/qiu-feng1/spring-framework.git

你可能感兴趣的:(spring,framework,spring,java,后端)