#SpringBoot核心 #注解详解 #开发技巧 #高效编程
作用:标记主启动类,整合了@Configuration
、@EnableAutoConfiguration
和@ComponentScan
示例:
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
作用:声明配置类,定义Bean
示例:
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
作用:组合@Controller
和@ResponseBody
,用于返回JSON/XML数据
示例:
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
}
作用:映射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);
}
作用:自动注入依赖,默认按类型匹配
示例:
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
}
注解 | 适用场景 |
---|---|
@Service |
业务逻辑层 |
@Repository |
数据访问层(JPA) |
@Controller |
MVC控制器(返回视图) |
作用:定义JPA实体类与数据库表映射
示例:
@Entity
@Table(name = "t_users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
作用:标记数据访问层,自动处理数据库异常
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// 自定义查询方法
User findByName(String name);
}
作用:注入配置文件中的属性值
示例:
# application.properties
app.max.retry=3
@Service
public class PaymentService {
@Value("${app.max.retry}")
private int maxRetry;
}
作用:批量绑定配置文件到Java对象
@ConfigurationProperties(prefix = "app")
@Data
public class AppConfig {
private int maxRetry;
private String apiKey;
}
作用:根据配置属性决定是否创建Bean
示例:
@Bean
@ConditionalOnProperty(name = "app.cache.enabled", havingValue = "true")
public CacheManager cacheManager() {
return new RedisCacheManager();
}
作用:指定Bean在特定Profile下生效
@Bean
@Profile("prod")
public DataSource prodDataSource() {
// 生产环境数据源
}
作用:实现切面编程,增强方法逻辑
示例:
@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;
}
}
作用:声明式事务管理
@Service
public class OrderService {
@Transactional
public void placeOrder(Order order) {
// 数据库操作
}
}
作用:加载完整应用上下文进行集成测试
@SpringBootTest
class UserServiceTest {
@Autowired
private UserService userService;
@Test
void testFindUser() {
User user = userService.findById(1L);
assertNotNull(user);
}
}
作用:注入Mock对象,用于单元测试
@SpringBootTest
class PaymentServiceTest {
@MockBean
private PaymentGateway paymentGateway;
@Test
void testPayment() {
when(paymentGateway.process(any())).thenReturn(true);
// 测试逻辑
}
}
Spring Boot通过丰富的注解极大简化了开发流程:
@SpringBootApplication
@RestController
、@GetMapping
@Entity
、@Repository
@Autowired
、@Component
@Value
、@ConfigurationProperties
正确使用这些注解,能快速构建高效、可维护的Spring Boot应用。建议结合官方文档与实际项目加深理解!