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);
    }
}
相关推荐
程序员黑豆13 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
hey_sml14 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo14 小时前
数据结构-环形链表
java·数据结构·链表
维克兜率天15 小时前
【维克】ARMA模型:AR与MA的完美结合
后端·restful
萧瑟余晖16 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
是未才16 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
上海安当技术16 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
ttod_qzstudio16 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
DevUI团队17 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
萧瑟余晖17 小时前
Java深入解析篇十七之Spring Security
java·开发语言·spring