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) |
@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应用。建议结合官方文档与实际项目加深理解! 🚀