当前位置: 首页 > news >正文

Spring和Spring Boot常用注解介绍及使用

Spring和Spring Boot框架通过丰富的注解集简化了Java开发,使得配置更加简洁且易于理解。

下面是一些常用的Spring和Spring Boot注解及其使用方式的简介:

目录

1. @Component

2. @Service

3. @Repository

4. @Controller

5. @RestController

6. @Autowired

7. @Value

8. @Configuration

9. @Bean

10. @SpringBootApplication

11. @EnableAutoConfiguration

12. @ComponentScan

13. @Conditional

14. @Profile

15. @Scope

16. @Lazy

17. @PostConstruct 和 @PreDestroy


1. @Component

概述: @Component是一个通用的Spring管理的Bean注解。

使用场景: 任何Spring管理的组件都可以使用@Component,但通常使用其特化注解(如@Service@Repository@Controller)来更明确地表达组件的角色。

@Component
public class MyComponent {public void doSomething() {System.out.println("Doing something...");}
}

2. @Service

概述: @Service@Component的特化,专门用于标识服务层的组件。

使用场景: 标识业务逻辑层的组件,表明该类承担业务服务功能。

@Service
public class MyService {public void performService() {System.out.println("Performing service...");}
}

3. @Repository

概述: @Repository@Component的特化,通常用于数据访问层。

使用场景: 用于DAO层,表明该类负责数据库操作,并启用自动异常转换。

@Repository
public class MyRepository {public void save() {System.out.println("Saving data...");}
}

4. @Controller

概述: @Controller@Component的特化,标识Spring MVC的控制器类。

使用场景: 用于标识控制器类,处理HTTP请求并返回视图。

@Controller
public class MyController {@GetMapping("/hello")@ResponseBodypublic String sayHello() {return "Hello, World!";}
}

5. @RestController

概述: @RestController@Controller@ResponseBody的组合注解。

使用场景: 用于创建RESTful web服务,返回JSON或XML响应。

@RestController
public class MyRestController {@GetMapping("/greet")public String greet() {return "Greetings!";}
}

6. @Autowired

概述: @Autowired用于自动注入依赖。

使用场景: 在需要依赖注入的地方(构造函数、字段、方法)使用,Spring会自动满足依赖需求。

@Component
public class MyComponent {private final MyService myService;@Autowiredpublic MyComponent(MyService myService) {this.myService = myService;}public void execute() {myService.performService();}
}

7. @Value

概述: @Value用于注入属性值。

使用场景: 注入配置文件中的值或系统环境变量。

@Component
public class MyComponent {@Value("${my.property}")private String myProperty;public void printProperty() {System.out.println("Property value: " + myProperty);}
}

8. @Configuration

概述: @Configuration标识配置类,相当于XML配置文件。

使用场景: 定义Bean并进行配置。

@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyService();}
}

9. @Bean

概述: @Bean用于定义一个Bean。

使用场景: 在配置类中使用,用于显式声明一个Bean。

@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyService();}
}

10. @SpringBootApplication

概述: @SpringBootApplication@Configuration@EnableAutoConfiguration@ComponentScan的组合注解。

使用场景: 标识Spring Boot主配置类,并启动自动配置和组件扫描。

@SpringBootApplication
public class MySpringBootApplication {public static void main(String[] args) {SpringApplication.run(MySpringBootApplication.class, args);}
}

11. @EnableAutoConfiguration

概述: @EnableAutoConfiguration让Spring Boot基于类路径中的依赖自动配置Spring应用上下文。

使用场景: 启用自动配置功能,大多数情况下不需要单独使用,因为@SpringBootApplication已经包含它。

@Configuration
@EnableAutoConfiguration
public class MyAutoConfiguration {
}

12. @ComponentScan

概述: @ComponentScan用于扫描指定包中的组件。

使用场景: 在配置类中使用,指定要扫描的包路径。

@Configuration
@ComponentScan(basePackages = "com.example")
public class MyComponentScanConfig {
}

13. @Conditional

概述: @Conditional根据条件决定是否实例化一个Bean。

使用场景: 在配置类中使用,配合条件类实现按条件装配。

@Configuration
public class ConditionalConfig {@Bean@Conditional(MyCondition.class)public MyService myService() {return new MyService();}
}

14. @Profile

概述: @Profile根据环境配置加载特定的Bean。

使用场景: 在开发、测试、生产等不同环境下加载不同的Bean。

@Configuration
public class ProfileConfig {@Bean@Profile("dev")public MyService devService() {return new MyService("Development Service");}@Bean@Profile("prod")public MyService prodService() {return new MyService("Production Service");}
}

15. @Scope

概述: @Scope定义Bean的作用域(单例、原型等)。

使用场景: 在需要特定作用域的Bean定义中使用。

@Component
@Scope("prototype")
public class MyPrototypeBean {// Bean will have prototype scope
}

16. @Lazy

概述: @Lazy指定Bean的延迟初始化。

使用场景: 在需要懒加载的Bean定义中使用,减少启动时间。

@Component
@Lazy
public class MyLazyBean {public MyLazyBean() {System.out.println("MyLazyBean initialized");}
}

17. @PostConstruct 和 @PreDestroy

概述: @PostConstruct@PreDestroy分别用于在Bean初始化后和销毁前执行特定方法。

使用场景: 在Bean生命周期的特定点执行自定义逻辑。

@Component
public class MyComponent {@PostConstructpublic void init() {System.out.println("MyComponent initialized");}@PreDestroypublic void destroy() {System.out.println("MyComponent about to be destroyed");}
}

这些注解在Spring和Spring Boot中有机地结合在一起,形成了一个功能丰富、易于使用的框架体系,极大地简化了Java应用的开发。

http://www.lryc.cn/news/377464.html

相关文章:

  • 【计算机毕业设计】211校园约拍微信小程序
  • 笨蛋学算法之LeetCodeHot100_1_两数之和(Java)
  • 用ip link add link命令创建vlan子设备
  • AD复用布局布线
  • 【深度学习驱动流体力学】采集OpenFOAM仿真的流体力学数据送入到强化学习DQN模型训练
  • 国内公开数据
  • QT QByteArray 的用法
  • InPixio Photo Cutter v10 解锁版安装教程 (懒人抠图工具)
  • Java17 --- SpringSecurity之OAuth2
  • 服务器上线的一些事
  • OceanBase-docker安装、连接数据库、修改mysql用户密码
  • 浪潮(Inspur)服务器硬件监控指标解读
  • 极简opencv操作xml文件
  • 更换域名流程记录
  • CSS 实现电影信息卡片
  • Skype机器人
  • 海外仓系统能解决海外仓哪些难题?海外仓标准化管理实用指南
  • 从零开始精通Onvif之录像存储
  • vue3面试题八股集合——2024
  • 第2章 Rust初体验5/8:match表达式和模式匹配:更富表达力:猜骰子冷热游戏
  • 1台UG图形工作站实现5-7人共享使用
  • Dubbo 3.x源码(22)—Dubbo服务引用源码(5)服务引用bean的获取以及懒加载原理
  • nodejs——原型链污染
  • 忘记 iPhone 密码:如果忘记密码,如何解锁 iPhone
  • 案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序
  • 第四届人工智能、机器人和通信国际会议(ICAIRC 2024)
  • ctr/cvr预估之FM模型
  • HAL-DMA中断空闲接受不定长数据
  • 【会议征稿,CPS出版】第四届管理科学和软件工程国际学术会议(ICMSSE 2024,7月19-21)
  • 无引擎游戏开发(3):数据结构设计|功能函数完善