Spring – 通过 Setter 注入来注入对象
Spring IoC(控制反转)容器是 Spring Framework 的核心。它创建对象,配置和组装它们的依赖关系,管理它们的整个生命周期。容器使用依赖注入(DI)来管理组成应用程序的组件。它从配置文件 (XML) 或Java代码或Java注释和Java POJO 类中获取有关对象的信息。这些对象称为 Bean。由于Java对象及其生命周期的控制不是由开发人员完成的,因此称为控制反转。以下是 Spring IoC 的一些主要特性,
- 为我们创建对象,
- 管理我们的对象,
- 帮助我们的应用程序可配置,
- 管理依赖项
Spring 依赖注入
依赖注入是Spring IOC(Inversion of Control)提供的主要功能。 Spring-Core 模块负责通过 Constructor 或 Setter 方法注入依赖项。控制反转的设计原则强调保持Java类相互独立,容器将它们从对象创建和维护中解放出来。这些由 Spring 管理的类必须遵守 Java-Bean 的标准定义。 Spring 中的依赖注入还确保了类之间的松散耦合。 Spring 依赖注入有两种类型。
- Setter 依赖注入 (SDI)
- 构造函数依赖注入 (CDI)
To read more on Spring Dependency Injection please refer to this article: Spring Dependency Injection with Example
二传手注入
Setter Injection 是两种依赖注入方法中更简单的一种。在此,依赖注入将在 setter 和/或 getter 方法的帮助下注入。现在要在 bean 中将 Dependency Injection 设置为 Setter Injection,它是通过 bean-configuration 文件完成的。为此,要使用 Setter Injection 设置的属性在 bean-config 文件中的
因此,在本文中,让我们学习如何使用 Spring 通过 Setter Injection 将我们的依赖项注入到我们的对象值中。对象是面向对象编程的基本单元,代表现实生活中的实体。所以通常在Java中,我们使用new关键字创建一个类的对象。
Test t = new Test();
// creating object of class Test
// t is the object
实现:假设我们有一个名为“Student”的类,并且在该类中,我们想要注入另一个名为“MathCheat”的类的对象。并且在名为“cheat()”的类中也存在一种类似的方法。
示例 1:
Java
// Java Program to Illustrate Student File
// Class
public class Student {
// Attributes
private int id;
private MathCheat mathCheat;
// Method
public void cheating()
{
System.out.println("My ID is: " + id);
mathCheat.mathCheating();
}
}
Java
// Java Program to Illustrate MathCheat File
// Class
public class MathCheat {
// Method
public void mathCheating()
{
// Print statement
System.out.println(
"And I Have Stated Math Cheating");
}
}
Java
// Java Program to Illustrate Student File
// Class
public class Student {
// Attributes
private int id;
private MathCheat mathCheat;
// Setter
public void setId(int id) { this.id = id; }
// Setter
public void setMathCheat(MathCheat mathCheat)
{
this.mathCheat = mathCheat;
}
// Method
public void cheating()
{
// Print statement
System.out.println("My ID is: " + id);
mathCheat.mathCheating();
}
}
XML
Java
// Java Program to Illustrate Main File
// Implementing Spring IoC
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
// Main class
public class Main {
// Main driver method
public static void main(String[] args)
{
// Using ApplicationContext to
// Implementing Spring IoC
ApplicationContext context
= new ClassPathXmlApplicationContext(
"beans.xml");
// Getting the bean student
Student student
= context.getBean("student", Student.class);
// Calling the method
student.cheating();
}
}
XML
示例 2:
Java
// Java Program to Illustrate MathCheat File
// Class
public class MathCheat {
// Method
public void mathCheating()
{
// Print statement
System.out.println(
"And I Have Stated Math Cheating");
}
}
So now we want to inject the object of MathCheat into the Student class by using the concept of Setter Dependency Injection. So at first, we have to create the setter method inside the Student.java file. Now the Student.java file is something like this.
示例 1:
Java
// Java Program to Illustrate Student File
// Class
public class Student {
// Attributes
private int id;
private MathCheat mathCheat;
// Setter
public void setId(int id) { this.id = id; }
// Setter
public void setMathCheat(MathCheat mathCheat)
{
this.mathCheat = mathCheat;
}
// Method
public void cheating()
{
// Print statement
System.out.println("My ID is: " + id);
mathCheat.mathCheating();
}
}
现在让我们在 beans.xml 文件中创建一个 Student Bean,在 bean 中,您必须在
语法:标准
但是这里我们注入的是对象,而不是像我们在这篇文章中通过 Setter 注入注入字面量值字面量所做的那样。所以对于这个例子,我们可以这样写
您可以看到我们如何在 Student bean 中创建 MathCheat 类的 bean。下面是beans.xml文件的完整代码
XML
因此,为了测试这些东西,让我们创建一个 main 方法并在 Student 类中调用 cheating() 方法。下面是 Main 的代码。 Java文件。
例子
Java
// Java Program to Illustrate Main File
// Implementing Spring IoC
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
// Main class
public class Main {
// Main driver method
public static void main(String[] args)
{
// Using ApplicationContext to
// Implementing Spring IoC
ApplicationContext context
= new ClassPathXmlApplicationContext(
"beans.xml");
// Getting the bean student
Student student
= context.getBean("student", Student.class);
// Calling the method
student.cheating();
}
}
输出:
My ID is: 101
And I Have Stated Math Cheating
另一种方法(正确方法)
所以还有另一种方法可以在 beans.xml 文件中创建 MathCheat 类的 bean。所以你可以使用“ ref ”来写这样的东西。
下面是beans.xml文件的完整代码。
XML
因此,无论何时您要运行您的应用程序,您都会得到相同的输出。