🌱 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) |
@Controller | MVC控制器(返回视图) |
四、数据访问与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应用。建议结合官方文档与实际项目加深理解! 🚀