Java Boot注解使用案例
常用注解及示例
1 @SpringBootApplication
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 组合了
@Configuration、@EnableAutoConfiguration、@ComponentScan
2 @RestController & @RequestMapping
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
// 查询用户
return userService.findById(id);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}
3 @Service & @Repository
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User findById(Long id) {
return userRepository.findById(id).orElse(null);
}
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// 自动实现CRUD方法
}
4 @Autowired & @Qualifier
@Service
public class OrderService {
// 方式1:字段注入
@Autowired
private UserService userService;
// 方式2:构造器注入(推荐)
private final PaymentService paymentService;
public OrderService(PaymentService paymentService) {
this.paymentService = paymentService;
}
// 方式3:使用Qualifier指定Bean
@Autowired
@Qualifier("alipayServiceImpl")
private PaymentService alipayService;
}
配置类注解
1 @Configuration & @Bean
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create()
.url("jdbc:mysql://localhost:3306/test")
.username("root")
.password("password")
.build();
}
}
2 @Value & @ConfigurationProperties
// application.properties
// app.name=MyApplication
// app.version=1.0.0
// server.port=8080
@Component
public class AppInfo {
@Value("${app.name}")
private String appName;
@Value("${app.version:1.0.0}") // 带默认值
private String version;
}
// 使用@ConfigurationProperties
@Component
@ConfigurationProperties(prefix = "app")
public class AppSettings {
private String name;
private String version;
private List<String> servers;
// getters and setters
}
事务注解
1 @Transactional
@Service
public class TransferService {
@Autowired
private AccountRepository accountRepository;
@Transactional(rollbackFor = Exception.class)
public void transfer(Long fromId, Long toId, BigDecimal amount) {
Account from = accountRepository.findById(fromId).orElseThrow();
Account to = accountRepository.findById(toId).orElseThrow();
from.setBalance(from.getBalance().subtract(amount));
to.setBalance(to.getBalance().add(amount));
accountRepository.save(from);
accountRepository.save(to);
}
}
异步处理注解
1 @Async
@SpringBootApplication
@EnableAsync // 启用异步支持
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Service
public class EmailService {
@Async
public CompletableFuture<Boolean> sendEmail(String to, String content) {
// 异步发送邮件
try {
Thread.sleep(1000); // 模拟耗时操作
System.out.println("发送邮件到: " + to);
return CompletableFuture.completedFuture(true);
} catch (InterruptedException e) {
return CompletableFuture.completedFuture(false);
}
}
}
// 调用异步方法
@RestController
public class NotificationController {
@Autowired
private EmailService emailService;
@PostMapping("/send-email")
public String sendEmail() {
emailService.sendEmail("test@example.com", "Hello");
return "邮件发送请求已提交";
}
}
定时任务注解
1 @Scheduled
@SpringBootApplication
@EnableScheduling // 启用定时任务
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Component
public class ScheduledTasks {
// 每5秒执行一次
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("当前时间: " + new Date());
}
// 使用cron表达式 - 每天中午12点执行
@Scheduled(cron = "0 0 12 * * ?")
public void runAtNoon() {
System.out.println("每天中午12点执行");
}
// 延迟1秒后,每10秒执行一次
@Scheduled(fixedDelay = 10000, initialDelay = 1000)
public void delayedTask() {
System.out.println("延迟后定时执行");
}
}
缓存注解
1 @Cacheable & @CacheEvict
@Service
public class ProductService {
// 缓存查询结果
@Cacheable(value = "products", key = "#id")
public Product findById(Long id) {
// 模拟耗时查询
slowDatabaseQuery();
return new Product(id, "Product " + id);
}
// 更新缓存
@CachePut(value = "products", key = "#product.id")
public Product update(Product product) {
return productRepository.save(product);
}
// 清除缓存
@CacheEvict(value = "products", key = "#id")
public void delete(Long id) {
productRepository.deleteById(id);
}
// 清除所有缓存
@CacheEvict(value = "products", allEntries = true)
public void clearAllCache() {
System.out.println("清除所有产品缓存");
}
}
完整示例 - 用户管理
// 实体类
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
// Repository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
// Service
@Service
@Transactional
public class UserService {
@Autowired
private UserRepository userRepository;
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
return userRepository.findById(id)
.orElseThrow(() -> new RuntimeException("用户不存在"));
}
@CacheEvict(value = "users", key = "#user.id")
public User createUser(User user) {
return userRepository.save(user);
}
}
// Controller
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return ResponseEntity.ok(userService.getUserById(id));
}
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
return ResponseEntity.status(HttpStatus.CREATED)
.body(userService.createUser(user));
}
}
这些是Spring Boot中最常用的注解案例,根据实际需求选择合适的注解来简化开发。

版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播