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

一、常用技术

  1. 自动配置(Auto-Configuration)

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

    java 复制代码
    @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)。
    java 复制代码
    @SpringBootApplication
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
  2. @Configuration 与 @Bean

    • @Configuration:声明一个类为配置类,替代 XML 配置。
    • @Bean:在配置类中定义 Bean 实例。
    java 复制代码
    @Configuration
    public class AppConfig {
        @Bean
        public DataSource dataSource() {
            return new HikariDataSource();
        }
    }
  3. @RestController 与 @RequestMapping

    • @RestController:组合@Controller@ResponseBody,直接返回 JSON 数据。
    • @RequestMapping:映射 HTTP 请求到控制器方法。
    java 复制代码
    @RestController
    @RequestMapping("/api")
    public class UserController {
        @GetMapping("/users")
        public List<User> getUsers() {
            return userService.findAll();
        }
    }
  4. @Autowired 与 @Qualifier

    • @Autowired:自动注入依赖,按类型匹配。
    • @Qualifier:指定注入的 Bean 名称,解决歧义性。
    复制代码
  5. @Value
    注入配置文件中的属性值:

    java 复制代码
    @Value("${server.port}")
    private int port;
  6. @SpringBootTest
    用于集成测试,加载完整的应用程序上下文:

    java 复制代码
    @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. 典型项目结构
sh 复制代码
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区分不同环境(如开发、生产)。

相关推荐
azaz_plus3 分钟前
C++ string
开发语言·c++·stl·sting
Yolo566Q20 分钟前
R+VIC模型融合实践技术应用及未来气候变化模型预测
开发语言·r语言
小徐Chao努力1 小时前
【Nexus】Maven 私服搭建以及上传自己的Jar包
java·maven·jar
邪恶的贝利亚1 小时前
神经网络中常用语言特性(python)(待完善)
开发语言·python
明月看潮生1 小时前
青少年编程与数学 02-010 C++程序设计基础 43课题、MFC
开发语言·c++·青少年编程·编程与数学
onejason1 小时前
轻松掌握爬虫技术:如何根据关键词抓取商品列表
java·前端·python
Ciderw1 小时前
侯捷 C++ 课程学习笔记:进阶语法之lambda表达式(二)
开发语言·c++·笔记·学习
Java技术小馆2 小时前
Feign的性能优化
java·后端·面试
跟着汪老师学编程2 小时前
16、JavaEE核心技术-EL与 JSTL
java·java-ee
失乐园2 小时前
突破性能瓶颈!3大维度吃透SQL优化:索引设计→慢查询→ShardingSphere实战
java·数据库·后端