带有示例的 Spring @Configuration 注解
Spring 中最重要的注解之一是@Configuration 注解,它表示该类具有 @Bean 定义方法。因此 Spring 容器可以处理该类并生成要在应用程序中使用的 Spring Bean。这个注解是spring核心框架的一部分。那么让我们通过一个示例项目来了解@Configuration Annotation。
实施:项目
假设我们已经有一个Java项目,并且所有 Spring JAR 文件都导入到该项目中。现在让我们创建一个名为 College 的简单类,在该类中,我们有一个简单的方法。
Prerequisite: Spring @ComponentScan Annotation with Example
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