Spring 框架注解
Spring 框架是最流行的Java EE 框架之一。它是一个开源轻量级框架,允许Java EE 7 开发人员构建简单、可靠且可扩展的企业应用程序。该框架主要侧重于提供各种方法来帮助您管理业务对象。现在谈论 Spring Annotation,Spring Annotation 是一种元数据形式,它提供有关程序的数据。注释用于提供有关程序的补充信息。它对他们注释的代码的操作没有直接影响。它不会改变编译程序的动作。 因此,在本文中,我们将通过一些示例来讨论 Spring 框架中可用的主要注解类型有哪些。
Spring 框架注解的类型
基本上,整个 Spring 框架中有 6 种类型的注解可用。
- Spring 核心注解
- Spring Web 注释
- Spring Boot 注解
- Spring 调度注解
- Spring 数据注解
- Spring Bean 注解
类型 1: Spring 核心注解
org.springframework.beans.factory.annotation和org.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.autoconfigure和org.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 元注释,它们是
- @服务
- @Repository
- @控制器
1:@Service:我们用@Service 指定一个类来表明他们持有业务逻辑。该注解除了用于服务层外,没有其他特殊用途。实用程序类可以标记为服务类。
2:@Repository:我们用@Repository 指定一个类来表示它们正在处理CRUD 操作,通常它与处理数据库表的DAO(数据访问对象)或Repository 实现一起使用。
3:@Controller:我们用@Controller 指定一个类,表示它们是前端控制器,负责处理用户请求并返回适当的响应。它主要用于 REST Web 服务。
So the stereotype annotations in spring are @Component, @Service, @Repository, and @Controller.