Java Spring Boot 常用技术及核心注解

发布于:2025-03-15 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、常用技术

  1. 自动配置(Auto-Configuration)
    Spring Boot 根据类路径中的依赖自动配置应用程序。例如,引入spring-boot-starter-web会自动配置内嵌 Tomcat 和 Spring MVC。

    @EnableAutoConfiguration  // 启用自动配置
    
  2. 起步依赖(Starter Dependencies)
    通过预定义的依赖集合(如spring-boot-starter-data-jpa)简化依赖管理,避免版本冲突。

  3. 内嵌服务器(Embedded Server)
    默认集成 Tomcat、Jetty 或 Undertow,无需单独部署 WAR 文件。

  4. Actuator 监控
    提供生产级监控端点(如健康检查、性能指标),通过spring-boot-starter-actuator启用。



二、核心注解使用

  1. @SpringBootApplication
    作用:主类注解,组合了以下三个核心注解:
    • @Configuration:标记类为配置类,定义 Bean。
    • @EnableAutoConfiguration:启用自动配置。
    • @ComponentScan:自动扫描当前包及其子包的组件(如@Service@Controller)。
    @SpringBootApplication
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
    
  2. @Configuration 与 @Bean
    • @Configuration:声明一个类为配置类,替代 XML 配置。
    • @Bean:在配置类中定义 Bean 实例。
    @Configuration
    public class AppConfig {
        @Bean
        public DataSource dataSource() {
            return new HikariDataSource();
        }
    }
    
  3. @RestController 与 @RequestMapping
    • @RestController:组合@Controller@ResponseBody,直接返回 JSON 数据。
    • @RequestMapping:映射 HTTP 请求到控制器方法。
    @RestController
    @RequestMapping("/api")
    public class UserController {
        @GetMapping("/users")
        public List<User> getUsers() {
            return userService.findAll();
        }
    }
    
  4. @Autowired 与 @Qualifier
    • @Autowired:自动注入依赖,按类型匹配。
    • @Qualifier:指定注入的 Bean 名称,解决歧义性。
  5. @Value
    注入配置文件中的属性值:
    @Value("${server.port}")
    private int port;
    
  6. @SpringBootTest
    用于集成测试,加载完整的应用程序上下文:
    @SpringBootTest
    class MyApplicationTests {
        @Test
        void contextLoads() {}
    }
    

三、注解说明及应用

1. 核心注解
注解 说明 示例
@SpringBootApplication 主启动类注解,组合了 @Configuration@EnableAutoConfiguration@ComponentScan 标记 main 方法所在的类
@Configuration 声明一个类为配置类,替代 XML 配置 定义 Bean 或配置类
@Bean 在配置类中声明一个 Bean @Bean public DataSource dataSource() { ... }
@ComponentScan 自动扫描组件(如 @Component, @Service 等) 在启动类中指定包扫描路径
@EnableAutoConfiguration 启用 Spring Boot 自动配置机制 通常由 @SpringBootApplication 包含

2. Web 开发(Spring MVC)
注解 说明 示例
@RestController 组合 @Controller@ResponseBody,直接返回 JSON/XML 数据 标记 REST API 控制器类
@RequestMapping 映射 HTTP 请求路径和方法 @RequestMapping("/api")
@GetMapping / @PostMapping 简化版请求映射(对应 HTTP 方法) @GetMapping("/users")
@RequestParam 绑定请求参数到方法参数 @RequestParam("name") String name
@PathVariable 绑定 URL 路径变量到方法参数 @PathVariable("id") Long id
@RequestBody 将请求体 JSON 反序列化为对象 @RequestBody User user
@ResponseStatus 设置 HTTP 响应状态码 @ResponseStatus(HttpStatus.CREATED)
@ExceptionHandler 处理控制器内的异常 @ExceptionHandler(Exception.class)

3. 数据访问(Spring Data JPA)
注解 说明 示例
@Entity 声明 JPA 实体类 标记数据库表对应的实体类
@Table 指定实体对应的数据库表名 @Table(name = "users")
@Id 标记主键字段 @Id private Long id;
@GeneratedValue 主键生成策略 @GeneratedValue(strategy = GenerationType.IDENTITY)
@Repository 标记数据访问层(DAO)组件 继承 JpaRepository 的接口
@Transactional 声明事务管理(方法或类级别) @Transactional
@Query 自定义 JPA 查询语句 @Query("SELECT u FROM User u WHERE u.name = ?1")

4. 依赖注入(IoC)
注解 说明 示例
@Autowired 自动注入依赖(推荐使用构造器注入) @Autowired private UserService userService;
@Component 通用组件注解,标记 Spring 管理的 Bean 通用组件类
@Service 标记服务层组件 @Service public class UserService { ... }
@Primary 指定优先注入的 Bean 解决多个同类型 Bean 的冲突
@Qualifier 按名称注入指定 Bean @Qualifier("userServiceImpl")

5. 配置管理
注解 说明 示例
@Value 注入配置文件中的值 @Value("${app.name}")
@ConfigurationProperties 将配置文件绑定到 Java 对象 @ConfigurationProperties(prefix = "app")
@Profile 指定配置或 Bean 在特定环境下生效 @Profile("dev")

6. 安全(Spring Security)
注解 说明 示例
@EnableWebSecurity 启用 Web 安全配置 配置类继承 WebSecurityConfigurerAdapter
@PreAuthorize 方法执行前的权限校验 @PreAuthorize("hasRole('ADMIN')")
@Secured 基于角色的访问控制 @Secured("ROLE_USER")

7. 高级特性
  • AOP(面向切面编程)
    • @Aspect: 声明切面类
    • @Pointcut: 定义切入点表达式
    • @Before / @After / @Around: 定义通知类型
  • 缓存
    • @EnableCaching: 启用缓存
    • @Cacheable: 缓存方法结果
  • 消息队列(如 RabbitMQ)
    • @EnableRabbit: 启用 RabbitMQ
    • @RabbitListener: 监听消息队列
  • 定时任务
    • @EnableScheduling: 启用定时任务
    • @Scheduled: 定义任务执行时间

8. 测试
注解 说明 示例
@SpringBootTest 启动完整 Spring 上下文进行集成测试 测试类注解
@MockBean 模拟并替换 Spring 上下文中的 Bean 在测试中模拟依赖
@Test JUnit 测试方法 @Test void testMethod() { ... }

9. Actuator 监控
  • 通过 spring-boot-starter-actuator 提供端点(如 /health, /metrics
  • 常用配置项:management.endpoints.web.exposure.include=*

10. 典型项目结构
src/main/java
  └── com.example.demo
      ├── config       # 配置类(@Configuration)
      ├── controller   # 控制器(@RestController)
      ├── service      # 服务层(@Service)
      ├── repository   # 数据层(@Repository)
      └── model        # 数据模型(@Entity)

四、其他常用技术

  • Spring Data JPA:简化数据库操作,通过@Repository@Entity注解。
  • Spring Security:通过@EnableWebSecurity配置安全策略。
  • Profile 配置:使用@Profile区分不同环境(如开发、生产)。



网站公告

今日签到

点亮在社区的每一天
去签到