📜  Spring @Component 注解与示例

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

Spring @Component 注解与示例

Spring 是最流行的Java EE 框架之一。它是一个开源轻量级框架,允许Java EE 7 开发人员构建简单、可靠且可扩展的企业应用程序。该框架主要侧重于提供各种方法来帮助您管理业务对象。与Java数据库连接 (JDBC)、JavaServer Pages (JSP) 和Java Servlet 等经典Java框架和应用程序编程接口 (API) 相比,它使 Web 应用程序的开发更加容易。该框架使用各种新技术,如面向方面编程 (AOP)、普通Java对象 (POJO) 和依赖注入 (DI) 来开发企业应用程序。现在谈论 Spring Annotation

Spring Framework 中有许多可用的注解。下面列出了一些 Spring 框架注解,在这里我们将讨论最重要的注解之一,即@Component 注解

  • @必需的
  • @自动连线
  • @配置
  • @ComponentScan
  • @豆
  • @零件
  • @控制器
  • @服务
  • @Repository 等

@Component 注解

@Component 是一个类级别的注解。它用于将类表示为组件。我们可以在整个应用程序中使用 @Component 将 bean 标记为 Spring 的托管组件。一个组件负责一些操作。 Spring 框架提供了三个其他特定的注解,用于将类标记为组件时使用。

  1. @服务
  2. @Repository
  3. @控制器

1:@Service:我们用@Service 指定一个类来表明他们持有业务逻辑。该注解除了用于服务层外,没有其他特殊用途。实用程序类可以标记为服务类。

2:@Repository:我们用@Repository 指定一个类来表示它们正在处理CRUD 操作,通常它与处理数据库表的DAO(数据访问对象)或Repository 实现一起使用。

3:@Controller:我们用@Controller 指定一个类,表示它们是前端控制器,负责处理用户请求并返回适当的响应。它主要用于 REST Web 服务。

示例: Spring @Component

让我们创建一个非常简单的 Spring 启动应用程序来展示 Spring 组件注解的使用以及 Spring 如何通过基于注解的配置和类路径扫描自动检测它。

第 1 步:创建一个简单的 Spring Boot 项目。

第 2 步:在 pom.xml 文件中添加 spring-context 依赖项。转到项目中的 pom.xml 文件并添加以下 spring-context 依赖项。

XML

    org.springframework
    spring-context
    5.3.13


Java
// Java Program to Illustrate Component class
package com.example.demo;
  
import org.springframework.stereotype.Component;
  
// Annotation
@Component
  
// Class
public class ComponentDemo {
  
    // Method
    public void demoFunction()
    {
  
        // Print statement when method is called
        System.out.println("Hello GeeksForGeeks");
    }
}


Java
// Java Program to Illustrate Application class
  
// Importing package here
package com.example.demo;
// Importing required classes
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  
// Annotation
@SpringBootApplication
  
// Class
public class DemoApplication {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Annotation based spring context
        AnnotationConfigApplicationContext context
            = new AnnotationConfigApplicationContext();
        context.scan("com.example.demo");
        context.refresh();
  
        // Getting the Bean from the component class
        ComponentDemo componentDemo
            = context.getBean(ComponentDemo.class);
        componentDemo.demoFunction();
  
        // Closing the context
        // using close() method
        context.close();
    }
}


第三步:创建一个简单的组件类

转到src > main > Java > your package name > 右键单击 > New > Java Class并创建您的组件类并用@Component注释标记它。

例子

Java

// Java Program to Illustrate Component class
package com.example.demo;
  
import org.springframework.stereotype.Component;
  
// Annotation
@Component
  
// Class
public class ComponentDemo {
  
    // Method
    public void demoFunction()
    {
  
        // Print statement when method is called
        System.out.println("Hello GeeksForGeeks");
    }
}

第 4 步:创建基于注释的 spring 上下文

现在转到您的应用程序(@SpringBootApplication)文件,并在此文件中创建一个基于注释的 spring 上下文并从中获取 ComponentDemo bean。

例子

Java

// Java Program to Illustrate Application class
  
// Importing package here
package com.example.demo;
// Importing required classes
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  
// Annotation
@SpringBootApplication
  
// Class
public class DemoApplication {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Annotation based spring context
        AnnotationConfigApplicationContext context
            = new AnnotationConfigApplicationContext();
        context.scan("com.example.demo");
        context.refresh();
  
        // Getting the Bean from the component class
        ComponentDemo componentDemo
            = context.getBean(ComponentDemo.class);
        componentDemo.demoFunction();
  
        // Closing the context
        // using close() method
        context.close();
    }
}

输出:

所以你可以看到@Component注解的威力,我们不需要做任何事情来将我们的组件注入到spring上下文中。下图显示了我们的 Spring Component 示例项目的目录结构。