Spring – 通过 Setter 方法进行依赖注入
依赖注入是Spring IOC(Inversion of Control)提供的主要功能。 Spring-Core 模块负责通过 Constructor 或 Setter 方法注入依赖项。控制反转的设计原则强调保持Java类相互独立,容器将它们从对象创建和维护中解放出来。这些由 Spring 管理的类必须遵守 Java-Bean 的标准定义。 Spring 中的依赖注入还确保了类之间的松散耦合。
需要依赖注入
假设类一需要类二的对象来实例化或操作一个方法,则称类一依赖于类二。现在,虽然依赖另一个模块看起来不错,但在现实世界中,这可能会导致很多问题,包括系统故障。因此,需要避免这种依赖关系。 Spring IOC 使用 Dependency Injection 解决此类依赖关系,这使得代码更易于测试和重用。通过为通用功能定义接口可以实现类之间的松散耦合,并且注入器将实例化所需实现的对象。实例化对象的任务由容器根据开发者指定的配置完成。
Spring依赖注入的类型
Spring 依赖注入有两种类型。他们是:
- Setter Dependency Injection (SDI):这是两种 DI 方法中较简单的一种。在此,DI 将在 setter 和/或 getter 方法的帮助下注入。现在要将 DI 设置为 bean 中的 SDI,这是通过 bean-configuration 文件完成的。为此,要使用 SDI 设置的属性在 bean-config 文件中的
标记下声明。 - 构造函数依赖注入(CDI):在这种情况下,DI将在构造函数的帮助下被注入。现在要将 DI 设置为 bean 中的 CDI,这是通过 bean-configuration 文件完成的。为此,要使用 CDI 设置的属性在 bean-config 文件中的
标记下声明。
通过 Setter 方法进行依赖注入和示例
setter注入是一种依赖注入,spring框架使用setter方法注入依赖对象。调用首先转到无参数构造函数,然后转到 setter 方法。它不会创建任何新的 bean 实例。让我们看一个通过 setter 方法注入依赖的示例。
- 员工。 Java (POJO 类)
- 配置文件
- 主要的。Java
1. 员工。Java
Java
package com.spring;
public class Student {
private String studentName;
private String studentCourse;
public String getStudentName()
{
return studentName;
}
public void setStudentName(String studentName)
{
this.studentName = studentName;
}
public String getStudentCourse()
{
return studentCourse;
}
public void setStudentCourse(String studentCourse)
{
this.studentCourse = studentCourse;
}
@Override public String toString()
{
return "Student{"
+ "studentName=" + studentName +
", studentCourse=" + studentCourse + '}';
}
}
XML
John
Spring Framework
Java
package com.spring;
import java.io.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationCotenxt;
public class GFG {
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationCotenxt("config.xml");
Student student= (Student)context.getBean("stud");
System.out.println(student);
}
}
2.config.xml文件
XML
John
Spring Framework
3.主要。Java
Java
package com.spring;
import java.io.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationCotenxt;
public class GFG {
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationCotenxt("config.xml");
Student student= (Student)context.getBean("stud");
System.out.println(student);
}
}
输出:
Student{ studentName= John , studentCourse= Spring Framework }