📜  带有示例的 Spring @Configuration 注解

📅  最后修改于: 2022-05-13 01:54:45.059000             🧑  作者: Mango

带有示例的 Spring @Configuration 注解

Spring 中最重要的注解之一是@Configuration 注解,它表示该类具有 @Bean 定义方法。因此 Spring 容器可以处理该类并生成要在应用程序中使用的 Spring Bean。这个注解是spring核心框架的一部分。那么让我们通过一个示例项目来了解@Configuration Annotation。

实施:项目

假设我们已经有一个Java项目,并且所有 Spring JAR 文件都导入到该项目中。现在让我们创建一个名为 College 的简单类,在该类中,我们有一个简单的方法。

A. 档案:大学。Java

Java
// Java Program to Illustrate College Class
 
package ComponentAnnotation;
 
// Class
public class College {
 
    // Method
    public void test()
    {
        // Print statement
        System.out.println("Test College Method");
    }
}


Java
// Java Program to Illustrate College Class
 
package ComponentAnnotation;
 
// Class
public class College {
 
    // Method
    public void test()
    {
        // Print statement
        System.out.println("Test College Method");
    }
}


Java
// Java Program to Illustrate College Class
 
package ComponentAnnotation;
 
// Class
public class College {
 
    // Method
    public void test()
    {
        // Print statement
        System.out.println("Test College Method");
    }
}


Java
// Java Program to Illustrate Configuration Class
 
package BeanAnnotation;
 
// Importing required classes
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class CollegeConfig {
 
      // Using Bean annotation to create
    // College class Bean
    @Bean
    // Here the method name is the
    // bean id/bean name
    public College collegeBean() {
       
        // Return the College object
        return new College();
    }
 
}


Java
// Java Program to Illustrate Application Class
 
package ComponentAnnotation;
 
// Importing required classes
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
// Application class
public class Main {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Use AnnotationConfigApplicationContext
        // instead of ClassPathXmlApplicationContext
        // because we are not using XML Configuration
        ApplicationContext context
            = new AnnotationConfigApplicationContext(
                CollegeConfig.class);
 
        // Getting the bean
        College college
            = context.getBean("collegeBean", College.class);
 
        // Invoking the method
        // inside main() method
        college.test();
    }
}



我们可以使用@Component注解为这个类创建 bean。所以我们可以修改我们的学院。 Java文件是这样的。

Java

// Java Program to Illustrate College Class
 
package ComponentAnnotation;
 
// Class
public class College {
 
    // Method
    public void test()
    {
        // Print statement
        System.out.println("Test College Method");
    }
}


但是在这种情况下,我们必须在beans.xml文件中编写以下行。

但是我们不想在我们的项目中使用完整的beans.xml文件。那么我们可以做些什么来替换beans.xml文件呢?一般来说, beans.xml是一个配置文件。所以我们可以做的是,我们可以在Java中创建一个配置类,并通过使用@Configuration 注解将这个类变成我们的配置类。是的,我们可以做到。所以现在让我们创建另一个名为 CollegeConfig 的类。

B. 文件:CollegeConfig。Java

Java

// Java Program to Illustrate College Class
 
package ComponentAnnotation;
 
// Class
public class College {
 
    // Method
    public void test()
    {
        // Print statement
        System.out.println("Test College Method");
    }
}


所以现在,我们不想使用@Component@ComponentScan注释来创建bean。让我们讨论另一种完成相同任务的方法。所以我们将使用@Bean 注解创建spring bean。但是怎么做?在哪里写这些方法?正如我们在开始讨论的那样“ @Configuration 注解表明该类具有@Bean 定义方法”,所以让我们解释一下这个语句并在CollegeConfig 中创建我们的 bean。使用 @Bean 注解的Java文件。所以我们可以在我们的CollegeConfig 中写这样的东西。 Java文件。请参阅评论以获得更好的理解。

@Bean
// Here the method name is the
// bean id/bean name
public College collegeBean(){
    // Return the College object
    return new College();
}

对,就是那样。

C. 文件:CollegeConfig。Java

Java

// Java Program to Illustrate Configuration Class
 
package BeanAnnotation;
 
// Importing required classes
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class CollegeConfig {
 
      // Using Bean annotation to create
    // College class Bean
    @Bean
    // Here the method name is the
    // bean id/bean name
    public College collegeBean() {
       
        // Return the College object
        return new College();
    }
 
}


类似地,如果你有另一个名为Student的类,并且你想为这个 Student 类创建 bean,那么你可以使用配置类中的 @Bean 注解来创建 bean,就像这样

@Bean
// Here the method name is the
// bean id/bean name
public Student studentBean(){
    // Return the Student object
    return new Student();
}

现在检查我们的应用程序,让我们在 Main 类中创建一个 main 方法。下面是Main 的代码。 Java文件。代码中添加了注释以更详细地理解代码。

D. 文件:主要。Java

Java

// Java Program to Illustrate Application Class
 
package ComponentAnnotation;
 
// Importing required classes
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
// Application class
public class Main {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Use AnnotationConfigApplicationContext
        // instead of ClassPathXmlApplicationContext
        // because we are not using XML Configuration
        ApplicationContext context
            = new AnnotationConfigApplicationContext(
                CollegeConfig.class);
 
        // Getting the bean
        College college
            = context.getBean("collegeBean", College.class);
 
        // Invoking the method
        // inside main() method
        college.test();
    }
}


输出:

Test College Method