当前位置: 首页 > article >正文

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

一、常用技术

  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在测试中模拟依赖
@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.kler.cn/a/585588.html

相关文章:

  • 无缝+安全:基于 Power BI Embedded 的外部用户数据共享全解析
  • 016-condition_variable
  • 写了一个QT的定时器
  • Deny by project hooks setting ‘default‘: size of the file
  • 深度学习和机器学习的差异
  • linux 命令 tail
  • 前端npm包- CropperJS
  • nginx: [error] invalid PID number ““ in “/usr/local/nginx/logs/nginx.pid“
  • 触控板 vs 数位板:远程设计作业外设适配报告
  • 编程自学指南:java程序设计开发,多线程编程,为什么需要多线程?线程的创建与启动,线程同步与锁机制,线程池
  • 多线程程序的测试和调试_第11章_《C++并发编程实战》笔记
  • 吴恩达机器学习笔记复盘(四)线性回归模型概述
  • 【Java】——运算符详解
  • PGSQL基本使用
  • SQLite?低调不是小众...
  • 红色警戒2:共和国之辉红警语音台词是什么?
  • 自适应二值化及伪影
  • RabbitMQ消息持久化与Lazy模式对比分析
  • 每日一题——逆波兰表达式
  • DeepSeek API 客户端使用文档