Spring Boot核心注解全解析
Spring Boot 常用注解分类整理
核心启动与配置注解
@SpringBootApplication
标记主启动类,是 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 的组合注解。
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@Configuration
声明一个类为配置类,替代 XML 配置文件。
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
@Bean
在配置类中定义 Bean,方法返回的对象由 Spring 容器管理。
依赖注入与组件扫描
@Component
通用组件注解,标记类为 Spring 管理的 Bean。
@Component
public class MyComponent { /* ... */ }
@Service
业务逻辑层组件注解,语义化标识服务类。
@Service
public class UserService { /* ... */ }
@Repository
数据访问层组件注解,通常用于 DAO 类。
@Repository
public class UserRepository { /* ... */ }
@Autowired
自动注入依赖,可按类型匹配 Bean。
@Service
public class OrderService {
@Autowired
private UserRepository userRepository;
}
@Qualifier
与 @Autowired 配合使用,指定注入的 Bean 名称。
@Autowired
@Qualifier("userServiceV2")
private UserService userService;
Web 开发相关注解
@RestController
组合 @Controller 和 @ResponseBody,适用于 RESTful API。
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getUsers() { /* ... */ }
}
@RequestMapping
定义请求映射路径,支持类和方法级别。
@RequestMapping(value = "/orders", method = RequestMethod.GET)
public List<Order> listOrders() { /* ... */ }
@GetMapping/@PostMapping
简化版的 HTTP 方法映射注解。
@PostMapping("/users")
public User createUser(@RequestBody User user) { /* ... */ }
@PathVariable
从 URL 路径中提取变量。
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) { /* ... */ }
@RequestParam
获取请求参数,支持默认值。
@GetMapping("/search")
public List<User> search(@RequestParam(required = false) String keyword) { /* ... */ }
@RequestBody
将 HTTP 请求体解析为 Java 对象。
@PostMapping("/save")
public void save(@RequestBody User user) { /* ... */ }
数据持久化注解
@Entity
标记类为 JPA 实体。
@Entity
@Table(name = "users")
public class User { /* ... */ }
@Id
声明 JPA 实体的主键字段。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Transactional
声明事务边界,可用于类或方法。
@Transactional
public void updateUser(User user) { /* ... */ }
测试相关注解
@SpringBootTest
加载完整的 Spring 应用上下文进行测试。
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
}
@MockBean
模拟依赖的 Bean,适用于单元测试。
@SpringBootTest
public class OrderServiceTest {
@MockBean
private PaymentService paymentService;
}
其他常用注解
@Value
注入配置文件中的属性值。
@Value("${app.timeout:30}")
private int timeout;
@Profile
指定 Bean 在特定环境下生效。
@Profile("dev")
@Service
public class DevService { /* ... */ }
@Scheduled
定时任务注解,需配合 @EnableScheduling 使用。
@Scheduled(fixedRate = 5000)
public void refreshCache() { /* ... */ }
通过合理使用这些注解,可以高效构建 Spring Boot 应用,减少冗余代码并提升可维护性。
BbS.okane040.info/PoSt/1121_994826.HtM
BbS.okane041.info/PoSt/1121_318618.HtM
BbS.okane042.info/PoSt/1121_162870.HtM
BbS.okane043.info/PoSt/1121_573803.HtM
BbS.okane044.info/PoSt/1121_417714.HtM
BbS.okane045.info/PoSt/1121_198099.HtM
BbS.okane046.info/PoSt/1121_937507.HtM
BbS.okane047.info/PoSt/1121_180171.HtM
BbS.okane048.info/PoSt/1121_524553.HtM
BbS.okane049.info/PoSt/1121_576064.HtM
BbS.okane040.info/PoSt/1121_183984.HtM
BbS.okane041.info/PoSt/1121_911932.HtM
BbS.okane042.info/PoSt/1121_155761.HtM
BbS.okane043.info/PoSt/1121_174684.HtM
BbS.okane044.info/PoSt/1121_474590.HtM
BbS.okane045.info/PoSt/1121_489738.HtM
BbS.okane046.info/PoSt/1121_707815.HtM
BbS.okane047.info/PoSt/1121_841826.HtM
BbS.okane048.info/PoSt/1121_216950.HtM
BbS.okane049.info/PoSt/1121_759461.HtM
BbS.okane050.info/PoSt/1121_654488.HtM
BbS.okane051.info/PoSt/1121_272688.HtM
BbS.okane052.info/PoSt/1121_589080.HtM
BbS.okane053.info/PoSt/1121_816898.HtM
BbS.okane054.info/PoSt/1121_688083.HtM
BbS.okane055.info/PoSt/1121_870459.HtM
BbS.okane056.info/PoSt/1121_413152.HtM
BbS.okane057.info/PoSt/1121_755007.HtM
BbS.okane058.info/PoSt/1121_016136.HtM
BbS.okane059.info/PoSt/1121_435291.HtM
BbS.okane050.info/PoSt/1121_083178.HtM
BbS.okane051.info/PoSt/1121_917450.HtM
BbS.okane052.info/PoSt/1121_677993.HtM
BbS.okane053.info/PoSt/1121_230197.HtM
BbS.okane054.info/PoSt/1121_672129.HtM
BbS.okane055.info/PoSt/1121_056765.HtM
BbS.okane056.info/PoSt/1121_881578.HtM
BbS.okane057.info/PoSt/1121_069380.HtM
BbS.okane058.info/PoSt/1121_953502.HtM
BbS.okane059.info/PoSt/1121_594264.HtM
BbS.okane050.info/PoSt/1121_946985.HtM
BbS.okane051.info/PoSt/1121_401821.HtM
BbS.okane052.info/PoSt/1121_617000.HtM
BbS.okane053.info/PoSt/1121_167738.HtM
BbS.okane054.info/PoSt/1121_661801.HtM
BbS.okane055.info/PoSt/1121_760146.HtM
BbS.okane056.info/PoSt/1121_102968.HtM
BbS.okane057.info/PoSt/1121_567305.HtM
BbS.okane058.info/PoSt/1121_398138.HtM
BbS.okane059.info/PoSt/1121_127790.HtM
BbS.okane050.info/PoSt/1121_606850.HtM
BbS.okane051.info/PoSt/1121_471165.HtM
BbS.okane052.info/PoSt/1121_495164.HtM
BbS.okane053.info/PoSt/1121_169979.HtM
BbS.okane054.info/PoSt/1121_000744.HtM
BbS.okane055.info/PoSt/1121_843097.HtM
BbS.okane056.info/PoSt/1121_934054.HtM
BbS.okane057.info/PoSt/1121_964719.HtM
BbS.okane058.info/PoSt/1121_871344.HtM
BbS.okane059.info/PoSt/1121_776904.HtM
BbS.okane050.info/PoSt/1121_222715.HtM
BbS.okane051.info/PoSt/1121_700973.HtM
BbS.okane052.info/PoSt/1121_396874.HtM
BbS.okane053.info/PoSt/1121_462719.HtM
BbS.okane054.info/PoSt/1121_163013.HtM
BbS.okane055.info/PoSt/1121_140443.HtM
BbS.okane056.info/PoSt/1121_884756.HtM
BbS.okane057.info/PoSt/1121_152344.HtM
BbS.okane058.info/PoSt/1121_415262.HtM
BbS.okane059.info/PoSt/1121_891557.HtM
BbS.okane050.info/PoSt/1121_752402.HtM
BbS.okane051.info/PoSt/1121_554302.HtM
BbS.okane052.info/PoSt/1121_181196.HtM
BbS.okane053.info/PoSt/1121_891491.HtM
BbS.okane054.info/PoSt/1121_483925.HtM
BbS.okane055.info/PoSt/1121_386530.HtM
BbS.okane056.info/PoSt/1121_026812.HtM
BbS.okane057.info/PoSt/1121_852647.HtM
BbS.okane058.info/PoSt/1121_587204.HtM
BbS.okane059.info/PoSt/1121_638942.HtM