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

ops/2025/3/14 18:16:29/

一、常用技术

  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 {@Beanpublic 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 {@Testvoid 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在测试中模拟依赖
@TestJUnit 测试方法@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区分不同环境(如开发、生产)。



http://www.ppmy.cn/ops/165731.html

相关文章

汽车NVH诊断案例 | 纯电车急加速过大弯底盘异响

引言 失去发动机的掩蔽效应后&#xff0c;新能源电车的NVH问题&#xff0c;成为了困扰维修技师新难点。风噪、胎噪、电机高频啸叫等问题更容易车主识别&#xff0c;根源却难以被有效分辨。如何更精准且高效地识别电车NVH问题根源&#xff1f;今天分享的这个案例&#xff0c;内…

【架构艺术】Go语言微服务monorepo的代码架构设计

近期因为项目架构升级原因&#xff0c;笔者着手调研一些go项目monorepo的代码架构设计&#xff0c;目标是长期把既有微服务项目重要的部分都转移到monorepo上面&#xff0c;让代码更容易维护&#xff0c;协作开发更加方便。虽然经验不多&#xff0c;但既然有了初步的调研&#…

CSS3 用户界面设计指南

CSS3 用户界面设计指南 引言 随着互联网的快速发展,用户界面设计已经成为网站和应用程序吸引和留住用户的关键因素之一。CSS3,作为Web开发中的核心技术之一,提供了丰富的工具和特性来改善用户界面。本文将深入探讨CSS3在用户界面设计中的应用,包括基本概念、常用技巧以及…

得物 Android Crash 治理实践

一、前言 通过修复历史遗留的Crash漏报问题&#xff08;包括端侧SDK采集的兼容性优化及Crash平台的数据消费机制完善&#xff09;&#xff0c;得物Android端的Crash监控体系得到显著增强&#xff0c;使得历史Crash数据的完整捕获能力得到系统性改善&#xff0c;相应Crash指标也…

引入其他 YML 配置源 —— Spring Boot 中的 `import` 功能

文章目录 引入其他 YML 配置源 —— Spring Boot 中的 import 功能引言1. 为什么需要引入其他 YML 配置文件&#xff1f;2. Spring Boot 如何引入其他 YML 配置文件&#xff1f;2.1 基本语法2.2 支持多文件引入2.3 使用外部配置文件 3. 使用 import 功能的优势3.1 配置文件的模…

Python第二十课:生成对抗网络 | AI创造力觉醒

🎯 本节目标 理解生成器与判别器的博弈论原理掌握DCGAN与StyleGAN的核心架构差异实现AI绘画系统生成二次元角色学习梯度惩罚与谱归一化等稳定技巧探索GAN在艺术创作中的伦理边界一、GAN基础理论(艺术赝品对决) 1. 双角色博弈模型 角色职责生活比喻生成器(G)制造逼真数据天…

走进Java:类和对象的初步理解

一、类和对象的引出 对于Java初学者来说&#xff0c;类和对象是一个有些不太好理解的知识点&#xff0c;在学习类和对象之前&#xff0c;会接触到Java中的八大基本数据类型。 数据类型分类数据类型名称关键字占用字节数取值范围整数类型字节型byte1 字节-128 到 127短整型sho…

若依-导出后端解析

针对若依框架微服务版本学习 若依导入导出功能的具体使用详见&#xff1a;后台手册 | RuoYi 1.导出逻辑&#xff1a; 导出文件的逻辑是先创建一个临时文件&#xff0c;等待前端请求下载结束后马上删除这个临时文件。但是有些下载插件&#xff0c;例如迅雷&#xff08;他们是二…