数据访问:@Db 一站式注入

📅 2026/7/21 22:54:14 👁️ 阅读次数 📝 编程学习
数据访问:@Db 一站式注入

多数据源配置(YAML)
solon.dataSources:
db1:
class: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://localhost/test
driverClassName: com.mysql.cj.jdbc.Driver
username: root
password: 123456
db2:
url: jdbc:mysql://localhost/order
driverClassName: com.mysql.cj.jdbc.Driver
username: root
password: 123456
5.2 @Db 注入
// Solon 一行搞定多数据源
@Db(“db1”) UserMapper userMapper;
@Db(“db2”) OrderMapper orderMapper;
对比 Spring Boot 多数据源需要配置:多个 DataSource + 多个 SqlSessionFactory + 多个 TransactionManager + @MapperScan… Solon 使用 @Db。

5.3 ORM 集成
ORM Spring Boot 依赖 Solon 依赖
MyBatis mybatis-spring-boot-starter mybatis-solon-plugin
MyBatis-Plus mybatis-plus-spring-boot-starter mybatis-plus-solon-plugin
JPA spring-boot-starter-data-jpa solon-data-jpa
Easy-Query easy-query-spring-boot-starter easy-query-solon-plugin
5.4 事务
Solon Spring Boot 说明
@Transaction @Transactional 声明式事务
@Transaction(policy = TranPolicy.requires_new) @Transactional(propagation = Propagation.REQUIRES_NEW) 事务传播策略
Solon 的 @Transaction 默认遇到任何异常都回滚,无需指定异常类型。

六、测试迁移
Solon Spring Boot 说明
@SolonTest(App.class) @SpringBootTest 测试启动
@SolonTest(env=“test”) @ActiveProfiles(“test”) 测试环境
HttpTester MockMvc HTTP 接口测试
@Rollback @Transactional + @Rollback 事务回滚
@Import(profiles=…) @TestPropertySource 导入测试属性
HttpTester 用法示例:

@SolonTest(App.class)
public class UserControllerTest extends HttpTester {

@Test public void testGetUser() { // GET 请求 String resp = path("/users/1").get(); assertEquals(200, resp.code()); // POST 请求 String json = "{\"name\":\"test\"}"; String resp2 = path("/users").body(json).post(); assertContains(resp2, "test"); }

}
七、其他常见对照
场景 Spring Boot Solon
拦截器 HandlerInterceptor @Around 注解或 Solon Filter
定时任务 @Scheduled @Scheduled(同名)+ @EnableScheduling
文件上传 MultipartFile UploadedFile(用法一致)
RPC 调用 @FeignClient @NamiClient
注册发现 @EnableDiscoveryClient 无需注解,引入插件自动生效
配置刷新 @RefreshScope 无需注解,配置变更自动感知
八、迁移检查清单

POM:spring-boot-starter-parent → solon-parent

POM:spring-boot-starter-* → solon-* / *-solon-plugin

配置:application.yml → app.yml(环境文件同理)

启动类:@SpringBootApplication → @SolonMain

启动:SpringApplication.run() → Solon.start()

IoC:@Autowired → @Inject

IoC:@Service/@Repository → @Component

Web:@RestController → @Controller

Web:@RequestMapping → @Mapping

Web:@PathVariable → @Path

Web:HttpServletRequest → Context

配置:@Value → @Inject(“${…}”)

数据:spring.datasource.* → solon.dataSources.*

数据:@Transactional → @Transaction

测试:@SpringBootTest → @SolonTest

测试:MockMvc → HttpTester
九、写在最后
这篇对照表覆盖了日常开发中最常用的 90% 场景。Solon 的注解体系并非简单的"换皮",它在统一性