📜  Spring 框架注解

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

Spring 框架注解

Spring 框架是最流行的Java EE 框架之一。它是一个开源轻量级框架,允许Java EE 7 开发人员构建简单、可靠且可扩展的企业应用程序。该框架主要侧重于提供各种方法来帮助您管理业务对象。现在谈论 Spring Annotation,Spring Annotation 是一种元数据形式,它提供有关程序的数据。注释用于提供有关程序的补充信息。它对他们注释的代码的操作没有直接影响。它不会改变编译程序的动作。 因此,在本文中,我们将通过一些示例来讨论 Spring 框架中可用的主要注解类型有哪些。

Spring 框架注解的类型

基本上,整个 Spring 框架中有 6 种类型的注解可用。

  1. Spring 核心注解
  2. Spring Web 注释
  3. Spring Boot 注解
  4. Spring 调度注解
  5. Spring 数据注解
  6. Spring Bean 注解

类型 1: Spring 核心注解

org.springframework.beans.factory.annotationorg.springframework.context.annotation包中的 Spring 注解通常称为 Spring Core 注解。我们可以将它们分为两类:

  • DI 相关注解
    • @自动连线
    • @Qualifier
    • @基本的
    • @豆
    • @懒惰的
    • @必需的
    • @价值
    • @范围
    • @Lookup 等。
  • 上下文配置注释
    • @轮廓
    • @进口
    • @ImportResource
    • @PropertySource 等。

DI 依赖注入)相关注解

1.1: @Autowired

@Autowired 注解应用于字段、setter 方法和构造函数。它隐式地注入对象依赖。我们使用@Autowired 标记将由 Spring 容器注入的依赖项。

1.2:现场注入

Java
class Student {
    @Autowired
    Address address;
}


Java
class Student {
    Address address;
  
    @Autowired
    Student(Address address) {
        this.address = address;
    }
}


Java
class Student {
    Address address;
  
    @Autowired
    void setaddress(Address address) {
        this.address = address;
    }
}


Java
package com.example.demo.controller;
  
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
  
@Controller
public class DemoController {
  
    @RequestMapping("/hello")
    @ResponseBody
    public String helloGFG()
    {
        return "Hello GeeksForGeeks";
    }
}


Java
@SpringBootApplication
  
// Class
public class DemoApplication {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        SpringApplication.run(DemoApplication.class, args);
    }
}


1.3:构造函数注入

Java

class Student {
    Address address;
  
    @Autowired
    Student(Address address) {
        this.address = address;
    }
}

1.4:二传手注入

Java

class Student {
    Address address;
  
    @Autowired
    void setaddress(Address address) {
        this.address = address;
    }
}

B 上下文配置注解

@Profile:如果您希望 Spring 仅在特定配置文件处于活动状态时使用 @Component 类或 @Bean 方法,那么您可以使用 @Profile 对其进行标记。

@Component
@Profile("developer")
public class Employee {}

类型 2: Spring Web 注解

org.springframework.web.bind.annotation包中的 Spring 注解通常称为 Spring Web 注解。此类别中可用的一些注释是:

  • @RequestMapping
  • @RequestBody
  • @PathVariable
  • @RequestParam
  • 响应处理注解
    • @ResponseBody
    • @ExceptionHandler
    • @ResponseStatus
  • @控制器
  • @RestController
  • @ModelAttribute
  • @CrossOrigin

示例: @Controller

Spring @Controller 注解也是@Component 注解的一种特化。 @Controller 注解表明一个特定的类充当控制器的角色。 Spring Controller 注解通常与基于 @RequestMapping 注解的注解处理程序方法结合使用。它只能应用于类。它用于将类标记为 Web 请求处理程序。它主要用于 Spring MVC 应用程序。这个注解充当被注解类的原型,表明它的作用。调度程序扫描这些带注释的类以查找映射方法并检测@RequestMapping 注释。

Java

package com.example.demo.controller;
  
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
  
@Controller
public class DemoController {
  
    @RequestMapping("/hello")
    @ResponseBody
    public String helloGFG()
    {
        return "Hello GeeksForGeeks";
    }
}

类型 3: Spring Boot 注解

org.springframework.boot.autoconfigureorg.springframework.boot.autoconfigure.condition包中的 Spring 注解通常称为 Spring Boot 注解。此类别中可用的一些注释是:

  • @SpringBootApplication
  • @EnableAutoConfiguration
  • 自动配置条件
    • @ConditionalOnClass 和 @ConditionalOnMissingClass
    • @ConditionalOnBean 和 @ConditionalOnMissingBean
    • @ConditionalOnProperty
    • @ConditionalOnResource
    • @ConditionalOnWebApplication 和 @ConditionalOnNotWebApplication
    • @条件表达式
    • @有条件的

示例: @SpringBootApplication

此注解用于标记 Spring Boot 应用程序的主类。它封装了@Configuration、@EnableAutoConfiguration 和@ComponentScan 注释及其默认属性。

Java

@SpringBootApplication
  
// Class
public class DemoApplication {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        SpringApplication.run(DemoApplication.class, args);
    }
}

类型 4: Spring 调度注解

org.springframework.scheduling.annotation包中的 Spring 注释通常称为 Spring 调度注释。此类别中可用的一些注释是:

  • @EnableAsync
  • @EnableScheduling
  • @异步
  • @预定
  • @时间表

示例: @EnableAsync

此注解用于在 Spring 中启用异步功能。

@Configuration
@EnableAsync
class Config {}

类型 5: Spring 数据注解

Spring Data 提供了对数据存储技术的抽象。因此,业务逻辑代码可以更加独立于底层的持久性实现。此类别中可用的一些注释是:

  • 常见的 Spring 数据注解
    • @Transactional
    • @NoRepositoryBean
    • @参数
    • @ID
    • @短暂的
    • @CreatedBy、@LastModifiedBy、@CreatedDate、@LastModifiedDate
  • Spring Data JPA 注释
    • @询问
    • @程序
    • @锁
    • @修改
    • @EnableJpaRepositories
  • Spring Data Mongo 注释
    • @文档
    • @场地
    • @询问
    • @EnableMongoRepositories

例子:

一个@Transactional  

当需要配置方法的事务行为时,我们可以通过@Transactional 注解来实现。

@Transactional
void payment() {}

@身份证: @Id 将模型类中的字段标记为主键。由于它独立于实现,它使模型类易于与多个数据存储引擎一起使用。

class Student {

    @Id
    Long id;

    // other fields
      // ........... 
    
}

类型 6: Spring Bean 注解

有几种方法可以在 Spring 容器中配置 bean。您可以使用 XML 配置声明它们,也可以使用配置类中的 @Bean 注释声明 bean,或者您可以使用org.springframework.stereotype包中的注释之一标记该类,并将其余部分留给组件扫描。此类别中可用的一些注释是:

  • @ComponentScan
  • @配置
  • 刻板印象注释
    • @零件
    • @服务
    • @Repository
    • @控制器

示例:刻板印象注释

Spring Framework 为我们提供了一些特殊的注解。这些注解用于在应用程序上下文中自动创建 Spring bean。 @Component 注解是主要的 Stereotype 注解。有一些从@Component派生的 Stereotype 元注释,它们是

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

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

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

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