📜  Spring @ComponentScan 注解与示例

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

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 中最重要的注解之一是@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