如何以 3 种不同的方式创建 Spring Bean?
Spring 是 Java EE 生态系统中非常流行的框架。它是一个开源轻量级框架,使 Java 开发人员能够构建可靠、可扩展且简化的业务应用程序。该框架的主要目标是为您提供各种工具来管理您的业务项目。
与传统的 Java 框架和 API(如 JSP、JDBC 和 Java Servlet)相比,开发 Web 应用程序要简单得多。
在 Spring 中,对象 - 主要是由 Spring IoC 容器控制的对象。它在应用程序中起着重要作用。Bean只不过是 Spring Ioc 容器以任何其他方式创建、组装和管理的对象。
根据我们提供给容器的配置元数据,这些 bean 被生成为 XML <bean/>例如,定义。
创建 Spring Bean 的不同方法
在本文中,我们将讨论创建 Spring Bean 的方法,如下所示 -
在 XML 配置文件中创建 Bean
使用 @Component 注释创建 Bean
使用 @Bean 注释创建 Bean
在解释每种方法之前,让我们创建一个名为 Employee 的类。我们将包括两个属性 Name 和 Employee number,对于这些属性,请使用 getter 和 setter,否则我们可以使用 lombok 来最小化或删除样板代码。
Employee.class
public class Employee { private String name; private String emp_nbr; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmp_nbr() { return emp_nbr; } public void setEmp_nbr(String emp_nbr) { this.emp_nbr = emp_nbr; } }
在 Java 编程中,我们通常使用 new 关键字创建类的实例。然而,在 Spring 中,有其他方法可以生成 bean 类的实例,而无需使用 new。
可以使用 new 关键字,但不建议这样做,因为这样做会阻止在创建 bean 时注入属性和使用自动装配。
方法 1:在 XML 配置文件中创建 Bean
这是创建 bean 的最简单方法,它在 XML 配置文件中定义。此配置文件中描述的 bean 均由 Spring 容器 在启动时创建和初始化,允许它们在整个 应用程序上下文 中随时使用。
语法
<bean id="AnyUniqueId" class="YourClassName"> <!-- 属性值将使用 setter 注入进行设置 --> </bean>
如何以 3 种不同的方式创建 Spring Bean?
我们将为上述已经创建的 Employee 类 创建一个 bean。这就是在 配置 XML 中定义 bean 的方式。
<bean id="employee" class="com.hari.sample.Employee"> </bean>
在运行程序时,属性 id 用于唯一标识 bean 并获取其引用。
通过遵循这种方法,我们声明一个 bean,并且可以使用以下方法在应用程序中访问和使用它 -
public class App{ @SuppressWarnings({"unchecked", "deprecation"}) public static void main( String[] args ){ ApplicationContext context = new AnnotationConfigApplicationContext(Employee.class); Employee emp = (Employee)context.getBean("employee"); System.out.println(emp.getEmp_nbr()); System.out.println(emp.getName()); } }
方法 2:使用 @Component 注释创建 Bean
注释用于传达有关程序的信息。它对注释代码的功能没有直接影响。
@Component 注释可帮助 Spring 自动识别自定义 bean。使用 Spring 组件 bean 时,通常以以下方式在 类 上方对其进行注释 -
示例
@Component public class Employee { private String name; private String emp_nbr; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmp_nbr() { return emp_nbr; } public void setEmp_nbr(String emp_nbr) { this.emp_nbr = emp_nbr; } }
注意 - 为了在 Spring Boot 应用程序中启用组件扫描,通常需要指定应扫描的基本包。这可以通过使用 @SpringBootApplication 注释主应用程序类或显式使用 @ComponentScan 注释来完成。
方法 3:使用 @Bean 注释创建 Bean
Spring 中的基本注释之一是 @Bean,它应用于方法以将其指定为 Spring 上下文管理的 bean 的提供者。通常,Spring Bean 注释通常用于配置类。
我们之前为此目的创建了一个 Employee 类,因此我们将创建一个名为 EmployeeConfig 的 Configuration 类。此 EmployeeConfig.class 文件的代码如下所示。
示例
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration public class EmployeeConfig { }
注意 − Spring 中的 @Configuration 注释旨在用于类级别。如果将其应用于 方法或字段,则会发生 编译错误,表明该配置在该特定位置不允许。
现在我们将利用 @Bean 注释来构造 Spring bean。 @Bean 注释用于 配置类 中,以构造 Employee 类 bean。
以下是 EmployeeConfig.java 文件的完整代码 −
//以下是一个 Java 程序,演示了如何在 Employee 类中使用配置: // 我们将通过导入来包含所需的类 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class EmployeeConfig { //创建一个 Employee 类 Bean // 使用 Bean 注释 @Bean public Employee employeeBean(){ // 返回 Employee 对象 return new Employee(); } }
结论
在本文中,我们通过一些示例讨论了创建 Spring bean 的方法。要实现上述示例,需要创建一个 Spring Boot 项目,并进行必要的配置才能成功运行。