如何以 3 种不同的方式创建 Spring Bean?

javaspringobject oriented programmingprogramming

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 类,因此我们将创建一个名为 EmployeeConfigConfiguration 类。此 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 项目,并进行必要的配置才能成功运行。


相关文章