Spring Boot核心注解速查指南
Spring Boot 常用注解分类整理
Spring Boot 提供了丰富的注解,用于简化开发流程、配置管理和组件定义。以下分类整理了常见的注解及其用法示例。
核心注解
@SpringBootApplication
组合注解,包含 @Configuration、@EnableAutoConfiguration 和 @ComponentScan,用于标记主启动类。
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@RestController
标记类为 RESTful 控制器,自动将返回值序列化为 JSON/XML。
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
}
依赖注入与组件扫描
@Component
通用组件注解,标记类为 Spring 管理的 Bean。
@Component
public class MyComponent {
// 业务逻辑
}
@Service
标记类为业务逻辑层组件。
@Service
public class UserService {
public List<User> findAll() {
// 查询逻辑
}
}
@Repository
标记类为数据访问层组件,通常用于 DAO 或 JPA 接口。
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
@Autowired
自动注入依赖,可配合 @Qualifier 指定具体 Bean。
@Service
public class OrderService {
@Autowired
private UserRepository userRepository;
}
配置相关注解
@Configuration
标记类为配置类,定义 Bean 的创建方式。
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
@Value
注入配置文件中的属性值。
@Value("${app.name}")
private String appName;
@ConfigurationProperties
批量绑定配置属性到 Java 对象。
@ConfigurationProperties(prefix = "database")
public class DatabaseConfig {
private String url;
private String username;
// getters & setters
}
Web 相关注解
@RequestMapping
定义请求映射路径,支持类级别和方法级别。
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
}
@GetMapping / @PostMapping
简化 HTTP 方法映射的快捷注解。
@PostMapping("/create")
public User createUser(@RequestBody User user) {
return userService.save(user);
}
@PathVariable
提取 URL 路径中的变量。
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
// 逻辑
}
@RequestParam
提取查询参数或表单数据。
@GetMapping("/search")
public List<User> searchUsers(@RequestParam String keyword) {
return userService.search(keyword);
}
数据持久化注解
@Entity
标记类为 JPA 实体。
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Transactional
声明事务边界,适用于方法或类。
@Service
public class OrderService {
@Transactional
public void placeOrder(Order order) {
// 事务操作
}
}
测试相关注解
@SpringBootTest
标记测试类,加载完整的 Spring 上下文。
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
}
@Test
标记测试方法。
@Test
public void testFindUser() {
User user = userService.findById(1L);
assertNotNull(user);
}
条件注解
@ConditionalOnProperty
根据配置属性条件化加载 Bean。
@Bean
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
public FeatureService featureService() {
return new FeatureServiceImpl();
}
@Profile
指定 Bean 或配置仅在特定 Profile 下生效。
@Configuration
@Profile("dev")
public class DevConfig {
// 开发环境配置
}
异步与定时任务
@Async
标记方法为异步执行。
@Service
public class NotificationService {
@Async
public void sendEmail(String email) {
// 异步发送邮件
}
}
@Scheduled
定义定时任务执行规则。
@Scheduled(fixedRate = 5000)
public void refreshCache() {
// 每 5 秒执行一次
}
以上注解覆盖了 Spring Boot 开发中的常见场景,合理使用可显著提升开发效率。
BbS.okacop000.info/PoSt/1120_938872.HtM
BbS.okacop001.info/PoSt/1120_641247.HtM
BbS.okacop002.info/PoSt/1120_453649.HtM
BbS.okacop003.info/PoSt/1120_091940.HtM
BbS.okacop004.info/PoSt/1120_604878.HtM
BbS.okacop005.info/PoSt/1120_730928.HtM
BbS.okacop006.info/PoSt/1120_247350.HtM
BbS.okacop007.info/PoSt/1120_369188.HtM
BbS.okacop008.info/PoSt/1120_505466.HtM
BbS.okacop009.info/PoSt/1120_029727.HtM
BbS.okacop000.info/PoSt/1120_314734.HtM
BbS.okacop001.info/PoSt/1120_967509.HtM
BbS.okacop002.info/PoSt/1120_686446.HtM
BbS.okacop003.info/PoSt/1120_221537.HtM
BbS.okacop004.info/PoSt/1120_567760.HtM
BbS.okacop005.info/PoSt/1120_661471.HtM
BbS.okacop006.info/PoSt/1120_320560.HtM
BbS.okacop007.info/PoSt/1120_074827.HtM
BbS.okacop008.info/PoSt/1120_323160.HtM
BbS.okacop009.info/PoSt/1120_626724.HtM
BbS.okacop000.info/PoSt/1120_935339.HtM
BbS.okacop001.info/PoSt/1120_585287.HtM
BbS.okacop002.info/PoSt/1120_954250.HtM
BbS.okacop003.info/PoSt/1120_262386.HtM
BbS.okacop004.info/PoSt/1120_572990.HtM
BbS.okacop005.info/PoSt/1120_785467.HtM
BbS.okacop006.info/PoSt/1120_384357.HtM
BbS.okacop007.info/PoSt/1120_916440.HtM
BbS.okacop008.info/PoSt/1120_626119.HtM
BbS.okacop009.info/PoSt/1120_258480.HtM
BbS.okacop000.info/PoSt/1120_064476.HtM
BbS.okacop001.info/PoSt/1120_817254.HtM
BbS.okacop002.info/PoSt/1120_617857.HtM
BbS.okacop003.info/PoSt/1120_671533.HtM
BbS.okacop004.info/PoSt/1120_649243.HtM
BbS.okacop005.info/PoSt/1120_804968.HtM
BbS.okacop006.info/PoSt/1120_772056.HtM
BbS.okacop007.info/PoSt/1120_606651.HtM
BbS.okacop008.info/PoSt/1120_551718.HtM
BbS.okacop009.info/PoSt/1120_299132.HtM
BbS.okacop000.info/PoSt/1120_268537.HtM
BbS.okacop001.info/PoSt/1120_434902.HtM
BbS.okacop002.info/PoSt/1120_101378.HtM
BbS.okacop003.info/PoSt/1120_544234.HtM
BbS.okacop004.info/PoSt/1120_906902.HtM
BbS.okacop005.info/PoSt/1120_700343.HtM
BbS.okacop006.info/PoSt/1120_864181.HtM
BbS.okacop007.info/PoSt/1120_751292.HtM
BbS.okacop008.info/PoSt/1120_368710.HtM
BbS.okacop009.info/PoSt/1120_121360.HtM
BbS.okacop000.info/PoSt/1120_933205.HtM
BbS.okacop001.info/PoSt/1120_916689.HtM
BbS.okacop002.info/PoSt/1120_185612.HtM
BbS.okacop003.info/PoSt/1120_502954.HtM
BbS.okacop004.info/PoSt/1120_384179.HtM
BbS.okacop005.info/PoSt/1120_384627.HtM
BbS.okacop006.info/PoSt/1120_431007.HtM
BbS.okacop007.info/PoSt/1120_589080.HtM
BbS.okacop008.info/PoSt/1120_267329.HtM
BbS.okacop009.info/PoSt/1120_579439.HtM
BbS.okacop000.info/PoSt/1120_854484.HtM
BbS.okacop001.info/PoSt/1120_188972.HtM
BbS.okacop002.info/PoSt/1120_195899.HtM
BbS.okacop003.info/PoSt/1120_552534.HtM
BbS.okacop004.info/PoSt/1120_507285.HtM
BbS.okacop005.info/PoSt/1120_521403.HtM
BbS.okacop006.info/PoSt/1120_555179.HtM
BbS.okacop007.info/PoSt/1120_583936.HtM
BbS.okacop008.info/PoSt/1120_579658.HtM
BbS.okacop009.info/PoSt/1120_491065.HtM
BbS.okacop000.info/PoSt/1120_607645.HtM
BbS.okacop001.info/PoSt/1120_459156.HtM
BbS.okacop002.info/PoSt/1120_904814.HtM
BbS.okacop003.info/PoSt/1120_780072.HtM
BbS.okacop004.info/PoSt/1120_178930.HtM
BbS.okacop005.info/PoSt/1120_124249.HtM
BbS.okacop006.info/PoSt/1120_080388.HtM
BbS.okacop007.info/PoSt/1120_401035.HtM
BbS.okacop008.info/PoSt/1120_451735.HtM
BbS.okacop009.info/PoSt/1120_878085.HtM