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)
@ControllerMVC控制器(返回视图)

四、数据访问与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应用。建议结合官方文档与实际项目加深理解! 🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值