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

Spring Boot常用注解全解析:从入门到实战

🌱 Spring Boot常用注解全解析:从入门到实战

#SpringBoot核心 #注解详解 #开发技巧 #高效编程


一、核心启动与配置注解

1. @SpringBootApplication

作用:标记主启动类,整合了@Configuration@EnableAutoConfiguration@ComponentScan
示例

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

2. @Configuration 与 @Bean

作用:声明配置类,定义Bean
示例

@Configuration  
public class AppConfig {  @Bean  public DataSource dataSource() {  return new HikariDataSource();  }  
}  

二、Web开发相关注解

1. @RestController

作用:组合@Controller@ResponseBody,用于返回JSON/XML数据
示例

@RestController  
@RequestMapping("/api")  
public class UserController {  @GetMapping("/users")  public List<User> getUsers() {  return userService.findAll();  }  
}  

2. @RequestMapping 与 HTTP方法注解

作用:映射HTTP请求路径与方法

@PostMapping("/create")  
public User createUser(@RequestBody User user) {  return userService.save(user);  
}  @PutMapping("/update/{id}")  
public User updateUser(@PathVariable Long id, @RequestBody User user) {  return userService.update(id, user);  
}  

三、依赖注入与Bean管理

1. @Autowired

作用:自动注入依赖,默认按类型匹配
示例

@Service  
public class UserService {  @Autowired  private UserRepository userRepository;  
}  

2. @Component系列注解

注解适用场景
@Service业务逻辑层
@Repository数据访问层(JPA)
@ControllerMVC控制器(返回视图)

四、数据访问与JPA注解

1. @Entity 与 @Table

作用:定义JPA实体类与数据库表映射
示例

@Entity  
@Table(name = "t_users")  
public class User {  @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  private Long id;  private String name;  
}  

2. @Repository

作用:标记数据访问层,自动处理数据库异常

@Repository  
public interface UserRepository extends JpaRepository<User, Long> {  // 自定义查询方法  User findByName(String name);  
}  

五、配置与属性绑定

1. @Value

作用:注入配置文件中的属性值
示例

# application.properties  
app.max.retry=3  
@Service  
public class PaymentService {  @Value("${app.max.retry}")  private int maxRetry;  
}  

2. @ConfigurationProperties

作用:批量绑定配置文件到Java对象

@ConfigurationProperties(prefix = "app")  
@Data  
public class AppConfig {  private int maxRetry;  private String apiKey;  
}  

六、条件注解

1. @ConditionalOnProperty

作用:根据配置属性决定是否创建Bean
示例

@Bean  
@ConditionalOnProperty(name = "app.cache.enabled", havingValue = "true")  
public CacheManager cacheManager() {  return new RedisCacheManager();  
}  

2. @Profile

作用:指定Bean在特定Profile下生效

@Bean  
@Profile("prod")  
public DataSource prodDataSource() {  // 生产环境数据源  
}  

七、AOP与事务管理

1. @Aspect 与 @Around

作用:实现切面编程,增强方法逻辑
示例

@Aspect  
@Component  
public class LogAspect {  @Around("execution(* com.example.service.*.*(..))")  public Object logExecutionTime(ProceedingJoinPoint pjp) throws Throwable {  long start = System.currentTimeMillis();  Object result = pjp.proceed();  System.out.println("方法执行耗时: " + (System.currentTimeMillis() - start) + "ms");  return result;  }  
}  

2. @Transactional

作用:声明式事务管理

@Service  
public class OrderService {  @Transactional  public void placeOrder(Order order) {  // 数据库操作  }  
}  

八、测试相关注解

1. @SpringBootTest

作用:加载完整应用上下文进行集成测试

@SpringBootTest  
class UserServiceTest {  @Autowired  private UserService userService;  @Test  void testFindUser() {  User user = userService.findById(1L);  assertNotNull(user);  }  
}  

2. @MockBean

作用:注入Mock对象,用于单元测试

@SpringBootTest  
class PaymentServiceTest {  @MockBean  private PaymentGateway paymentGateway;  @Test  void testPayment() {  when(paymentGateway.process(any())).thenReturn(true);  // 测试逻辑  }  
}  

总结

Spring Boot通过丰富的注解极大简化了开发流程:

  • 启动类@SpringBootApplication
  • Web开发@RestController@GetMapping
  • 数据访问@Entity@Repository
  • 依赖管理@Autowired@Component
  • 配置管理@Value@ConfigurationProperties

正确使用这些注解,能快速构建高效、可维护的Spring Boot应用。建议结合官方文档与实际项目加深理解! 🚀

http://www.xdnf.cn/news/34093.html

相关文章:

  • 洛谷P1120 小木棍
  • 《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理
  • 94. 二叉树的中序遍历
  • Simulink中建立交流单项永磁同步电机模型教程
  • python——列表和元组
  • 深入剖析 HashMap:内部结构与性能优化
  • Linux——进程概念
  • 网络开发基础(游戏)之 Socket API
  • [Java EE] Spring 配置 和 日志
  • 代码随想录训练营第35天 || 01背包问题 416. 分割等和子集
  • Vue基础(6)_键盘事件
  • 玛哈特整平机:工业制造中的关键设备
  • Java 动态代理实现
  • Python scikit-learn 机器学习算法实践
  • 【每天一个知识点】模式识别
  • MySQL进阶-存储过程-变量语法结构
  • C++用于保留浮点数的两位小数,使用宏定义方法(可兼容低版本Visual Studio)
  • JZ8P1533 充电型数字可编程控制器
  • 200+短剧出海平台:谁能成为“海外红果”?
  • 电脑端移植至手机平板:攻克难题,仙盟架构显神通——仙盟创梦IDE
  • 2025.04.19-阿里淘天春招算法岗笔试-第二题
  • 在RK3588上使用SRS流媒体服务器
  • kafka集群认证
  • NumPy 核心指南:零基础入门与实践
  • 商标起名换了暗示词,通过初审!
  • 边生成边训练:构建合成数据驱动的在线训练系统设计实战
  • XMind 下载指南
  • 基于autoware.1.14与gazebo联合仿真进行全局规划高精地图版
  • 可穿戴经颅多通道直流电刺激产品测试总结
  • 16、堆基础知识点和priority_queue的模拟实现