Spring Boot 常用注解

一、放在类上面,让 Spring 管理这个类

@Component

把这个工具类交给 Spring 管理,别的类可以直接拿来用

类上写法

复制代码
@Component
public class CacheClient {
    public void set(String key, Object value) {
        // 存Redis
    }
}

别的类怎么引用

复制代码
@Service
public class ShopService {
    // 直接引用上面的 CacheClient
    @Autowired
    private CacheClient cacheClient;

    public void save() {
        cacheClient.set("key", "value");
    }
}

@Service

业务类交给 Spring 管理,Controller 可以调用

类上写法

复制代码
@Service
public class ShopService {
    public Shop getById(Long id) {
        // 查询店铺
        return new Shop();
    }
}

别的类怎么引用

复制代码
@RestController
public class ShopController {
    // 引用 Service
    @Autowired
    private ShopService shopService;

    @GetMapping("/shop/{id}")
    public Shop getShop(@PathVariable Long id) {
        return shopService.getById(id);
    }
}

@RestController

接收前端请求,提供接口,不用别人引用它

写法

复制代码
@RestController
@RequestMapping("/shop")
public class ShopController {
    // 前端访问 /shop/1 就会进来
    @GetMapping("/{id}")
    public String test() {
        return "hello";
    }
}

@Mapper

数据库操作接口,Service 里可以调用查库

写法

复制代码
@Mapper
public interface ShopMapper {
    Shop selectById(Long id);
}

别的类怎么引用

复制代码
@Service
public class ShopService {
    @Autowired
    private ShopMapper shopMapper;

    public Shop getById(Long id) {
        return shopMapper.selectById(id);
    }
}

@Configuration

配置类,里面定义工具,别人可以引用

写法

复制代码
@Configuration
public class ThreadPoolConfig {
    @Bean
    public ExecutorService threadPool() {
        return Executors.newFixedThreadPool(10);
    }
}

别的类怎么引用

复制代码
@Service
public class ShopService {
    @Autowired
    private ExecutorService threadPool;
}

二、加在方法上:自动执行

@PostConstruct

对象一创建好,方法自动跑一次

复制代码
@Service
public class ShopService {
    @Autowired
    private CacheClient cacheClient;

    // 项目启动自动执行
    @PostConstruct
    public void preload() {
        System.out.println("启动自动存缓存");
        cacheClient.set("hotShops", "店铺数据");
    }
}

@PreDestroy

项目关闭前自动执行一次

复制代码
@Component
public class MyCleaner {
    @PreDestroy
    public void close() {
        System.out.println("项目关闭,释放资源");
    }
}

三、数据库事务

@Transactional

方法内报错,所有数据库操作全部回滚

复制代码
@Service
public class ShopService {
    @Transactional
    public void update(Shop shop) {
        // 一步错,全部回滚
        mapper.updateById(shop);
    }
}
相关推荐
SL_staff9 分钟前
合规性折旧:当知识资产因主权缺位在审计中‘功能性清零’
java·设计模式·开源
wzq11_6669 分钟前
Kubernetes集群——基础篇(基础知识与搭建步骤一遍过!!!)
java·容器·kubernetes
Dreams_l13 分钟前
基于SpringBoot实现的抽奖系统(一)
java·spring boot·后端
落魄实习生19 分钟前
Agent Scope Java 2.x 系列【1】核心架构
java·开发语言·架构
鬼手点金28 分钟前
Claude Code示范案例-常用快捷命令
java·服务器·前端·计算机视觉·前向传播
温暖小土30 分钟前
Spring AI 接入通义千问向量模型
java·人工智能·spring
Sarvartha43 分钟前
数组基础知识
java·开发语言
泡海椒1 小时前
金融报表开发:jquick-pdf K 线图 PDF 可视化解决方案
java·开发语言·金融·pdf
余槐i1 小时前
rollbackFor 不设置,Checked 异常不回滚:Spring 默认规则与两行修复的取舍
java·spring boot·后端·spring·事务管理
孙启超1 小时前
【AI开发之Rust】第 17 课:项目总览与核心架构 —— AI 助手 Rust 核心从 0 到 1
开发语言·后端·rust