Spring 实用技巧
总结项目经验的时候,提取的一些有用常用的spring技巧
Spring gradle依赖插件省略版本号
buildscript {
dependencies {
classpath("io.spring.gradle:dependency-management-plugin:$dependencyManagementVersion")
}
}
plugins {
id 'java-library'
}
group 'com.sea'
version '1.0-SNAPSHOT'
subprojects {
repositories {
mavenLocal()
mavenCentral()
}
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom "com.sea:dependency-management:1.0-SNAPSHOT"
}
}
dependencies {
// springboot
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
api("org.springframework.boot:spring-boot-autoconfigure")
api "org.springframework.boot:spring-boot-starter-web"
api("org.springframework.boot:spring-boot-starter-log4j2")
}
}
很方便,通过maven bom还可以自定义自己的依赖库,可以看看工程总结中的这篇文章统一依赖管理
@ControllerAdvice
使用@ControllerAdvice处理全局异常,全局数据绑定,可以参考工程总结中的这两篇文章
继承spring HandlerInterceptorAdapter实现自己的拦截器
可以查看实际应用日志,拦截了请求,输出请求相关log。
@ConfigurationProperties
项目中会经常讲属性配置到application.properties中,考虑下使用@ConfigurationProperties配置在代码中会很方便。
@Data
@ConfigurationProperties("my.biz")
@Configuration
public class MyProperties {
private String env="dev";
private boolean ifEnableSubscribe=false;
}
如果区分环境,还需要讲application-online.properties中配置
my.biz.env=online
my.biz.if-enable-subscribe=true
项目多数据源配置
#zoutfits数据库配置
spring.datasource.outfits.url=jdbc:mysql://mysqlhost:3306/zoutfits?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.outfits.username=username
spring.datasource.outfits.password=password
spring.datasource.outfits.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.outfits.hikari.max-lifetime=600000
@Configuration
public class CoreDataSourceConfiguration {
@Bean(name = "outfitsDataSourceProperties")
@ConfigurationProperties(prefix = "spring.datasource.outfits")
public DataSourceProperties outfitsDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "outfitsDataSource")
public DataSource outfitsDataSource(@Autowired @Qualifier("outfitsDataSourceProperties")
DataSourceProperties outfitsDataSourceProperties) {
return outfitsDataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean(name = "outfitsJdbcTemplate")
public JdbcTemplate outfitsJdbcTemplate(@Autowired @Qualifier("outfitsDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}