3.6 Guice 整合
什么是 Guice
Guice 是 Google 开源的一个轻量化依赖注入工具,Spring 包含依赖注入能力之外含有很多其它能里。若只想在项目中使用依赖注入那么可以考虑使用 Guice。
- Guice 项目地址:https://github.com/google/guice
dbvisitor-guice 特性
- 自动配置数据源
- 注解化事务控制
- Mapper 接口注入
- 支持多数据源
如何使用
首先引入依赖包,当前版本:6.0.1
Maven 依赖
<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor-guice</artifactId>
<version>最新版本的版本号</version>
</dependency>
选用 HikariCP 作为数据库链接池
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
配置文件
# 数据源使用 HikariCP
dbvisitor.jdbc-ds=com.zaxxer.hikari.HikariDataSource
dbvisitor.jdbc-ds.jdbc-url=jdbc:mysql://127.0.0.1:13306/devtester?allowMultiQueries=true
dbvisitor.jdbc-ds.username=root
dbvisitor.jdbc-ds.password=123456
dbvisitor.jdbc-ds.minimum-idle=5
dbvisitor.jdbc-ds.maximum-pool-size=12
dbvisitor.jdbc-ds.max-lifetime=1200000
dbvisitor.jdbc-ds.auto-commit=true
dbvisitor.jdbc-ds.connection-timeout=20000
dbvisitor.mapper-locations=classpath:dbvisitor/mapper/*.xml
dbvisitor.mapper-packages=net.hasor.dbvisitor.test.dao
注入 Mapper
public class ServiceTest {
@Inject
private UserMapper userMapper;
...
}
启动 Guice
// 加载配置文件
Properties properties = new Properties();
properties.load(ResourcesUtils.getResourceAsStream("jdbc.properties"));
// 初始化 Guice 并加载 DbVisitorModule 插件
Injector injector = Guice.createInjector(new DbVisitorModule(properties));
// 尽情享受
ServiceTest service = injector.getInstance(ServiceTest.class);
...
Example
注册的类型
- JdbcOperations 接口,JdbcTemplate 是它的实现类
- LambdaOperations 接口,LambdaTemplate 是它的实现类
- TransactionManager 接口,是开发 编程式 事务的 API 接口
- TransactionTemplate 接口,是开发 模版 事务的 API 接口
- Configuration 配置类
- Session 类
- 自定义 Mapper
配置项说明
属性名 | 描述 |
---|---|
dbvisitor.mapper-locations | 可选 要扫描加载的 Mapper 映射文件所在路径,默认值为 dbvisitor/mapper/*.xml |
dbvisitor.mapper-packages | 可选 要扫描加载的 Mapper 接口定义所在的包名,如果有多个包使用 , 号分割 |
dbvisitor.mapper-disabled | 可选 使用 true/false 表示是否禁用 dbvisitor.mapper-packages 扫描到的 Mapper 接口。默认值为 false 当与某些框架合用同一个 mapper 文件时如果遇到冲突可考虑设置为 true |
dbvisitor.marker-annotation | 可选 设置一个扫描路径当扫描到的 Mapper 接口身上标有某个特定类型的注解时才会被认作 Mapper 接口类。默认为:net.hasor.dbvisitor.mapper.MapperDef |
dbvisitor.marker-interface | 可选 设置一个扫描路径当扫描到的 Mapper 接口实现了某个特定接口时才会被认作 Mapper 接口类。默认为:net.hasor.dbvisitor.mapper.Mapper |
dbvisitor.auto-mapping | 可选 是否将类型下的所有字段都自动和数据库中的列进行映射匹配,true 表示自动。false 表示必须通过 @Column 注解声明 |
dbvisitor.camel-case | 可选 表名和属性名,根据驼峰规则转换为带有下划线的表名和列名 |
dbvisitor.use-delimited | 可选 强制在生成 表名/列名/索引名 时候增加标识符限定,例如:通过设置该属性来解决列名为关键字的问题。默认是 false 不设置。 |
dbvisitor.case-insensitive | 可选 是否对表名列名敏感,默认 true 不敏感 |
dbvisitor.ignore-nonexist-statement | 可选 在 Mapper 接口方法映射到 XML 过程中是否忽略缺失的映射。默认是 false,遇到缺失会报错。 |
dbvisitor.dialect | 可选 默认使用的数据库方言 |