Spring @ComponentScan 注解与示例
Spring 是最流行的Java EE 框架之一。它是一个开源轻量级框架,允许Java EE 7 开发人员构建简单、可靠且可扩展的企业应用程序。该框架主要侧重于提供各种方法来帮助您管理业务对象。与Java数据库连接 (JDBC)、JavaServer Pages (JSP) 和Java Servlet 等经典Java框架和应用程序编程接口 (API) 相比,它使 Web 应用程序的开发更加容易。该框架使用各种新技术,如面向方面编程 (AOP)、普通Java对象 (POJO) 和依赖注入 (DI) 来开发企业应用程序。现在谈论 Spring Annotation。
Spring Annotations are a form of metadata that provides data about a program. Annotations are used to provide supplemental information about a program. It does not have a direct effect on the operation of the code they annotate. It does not change the action of the compiled program.
Spring 中最重要的注解之一是@ComponentScan,它与 @Configuration 注解一起用于指定我们想要扫描的包。不带参数的 @ComponentScan 告诉 Spring 扫描当前包及其所有子包。那么让我们通过一个示例项目来了解@ComponentScan 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 whenever this method of
// College class is called
System.out.println("Test College Method");
}
}
XML
Java
// Java Program to Illustrate Component Annotation
// Indulgence in College Class
package ComponentAnnotation;
// Importing required classes
import org.springframework.stereotype.Component;
// Annotation
@Component("collegeBean")
// Class
public class College {
// Method
public void test()
{
// Print statement whenever this method is called
System.out.println("Test College Method");
}
}
Java
// Java Program to Illustrate Configuration of
// College Class
package ComponentAnnotation;
// Importing required classes
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
// Annotation
@Configuration
@ComponentScan(basePackages = "ComponentAnnotaion")
// Class
public class CollegeConfig {
}
Java
// Java Program to Illustrate Application Class
package ComponentAnnotation;
// Importing required classes
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
// Main class
public class Main {
// Main driver method
public static void main(String[] args)
{
// Using AnnotationConfigApplicationContext
// instead of ClassPathXmlApplicationContext
// Because we are not using XML Configuration
ApplicationContext context
= new AnnotationConfigApplicationContext(
CollegeConfig.class);
// Get the bean and storing it in
// a object of College class type
College college
= context.getBean("collegeBean", College.class);
// Invoking the method
// inside main() method
college.test();
}
}
现在让我们在beans.xml文件中为这个类创建一个 Bean。下面是beans.xml文件的代码。
B.文件:beans.xml
XML
但是我们不想通过这种方法创建 bean。我们想使用一些注释来完成这项任务。所以我们可以使用@Component注解来完成同样的任务。所以我们可以修改我们的学院。 Java文件是这样的。
C.文件:修改后的学院。Java
Java
// Java Program to Illustrate Component Annotation
// Indulgence in College Class
package ComponentAnnotation;
// Importing required classes
import org.springframework.stereotype.Component;
// Annotation
@Component("collegeBean")
// Class
public class College {
// Method
public void test()
{
// Print statement whenever this method is called
System.out.println("Test College Method");
}
}
但是在这种情况下,我们必须在beans.xml文件中编写以下行。
注意:但是我们不想在我们的项目中使用完整的beans.xml文件。那么我们可以做些什么来替换beans.xml文件呢?一般来说, beans.xml是一个配置文件。所以我们可以在Java中创建一个配置类,并通过使用@Configuration 注解将这个类变成我们的配置类。是的,我们可以做到。所以现在让我们创建另一个名为 CollegeConfig 的类。另一件事是,我们还必须使用@ComponentScan注释,因为我们需要扫描所有组件。在这个特定的包“ComponentAnnotation”中,无论存在什么类,@Component 注释都将为它创建 bean,为了在 Configuration 类中做到这一点,我们需要定义我们的基本包,如下所示:
@ComponentScan(basePackages = "ComponentAnnotaion")
下面是CollegeConfig 的代码。Java
D.文件:CollegeConfig。Java
Java
// Java Program to Illustrate Configuration of
// College Class
package ComponentAnnotation;
// Importing required classes
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
// Annotation
@Configuration
@ComponentScan(basePackages = "ComponentAnnotaion")
// Class
public class CollegeConfig {
}
现在检查我们的应用程序,让我们在 Main 类中创建一个 main 方法。下面是Main 的代码。 Java文件。代码中添加了注释以更详细地理解代码。
E.应用程序或主文件:Main。Java
例子
Java
// Java Program to Illustrate Application Class
package ComponentAnnotation;
// Importing required classes
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
// Main class
public class Main {
// Main driver method
public static void main(String[] args)
{
// Using AnnotationConfigApplicationContext
// instead of ClassPathXmlApplicationContext
// Because we are not using XML Configuration
ApplicationContext context
= new AnnotationConfigApplicationContext(
CollegeConfig.class);
// Get the bean and storing it in
// a object of College class type
College college
= context.getBean("collegeBean", College.class);
// Invoking the method
// inside main() method
college.test();
}
}
输出:
Test College Method