依存関係の追加
まずpom.xmlにDruidの依存関係を追加します。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
データソース設定
application.propertiesで複数データソースの設定を行います。
# プライマリデータソース (MySQL)
spring.datasource.primary.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.primary.url=jdbc:mysql://localhost:3306/main_db
spring.datasource.primary.username=root
spring.datasource.primary.password=password
# セカンダリデータソース (SQL Server)
spring.datasource.secondary.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.secondary.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.secondary.url=jdbc:sqlserver://localhost:1433;DatabaseName=secondary_db
spring.datasource.secondary.username=sa
spring.datasource.secondary.password=password
データソース設定クラス
@Configuration
@EnableConfigurationProperties
public class DatabaseConfiguration {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DruidDataSourceBuilder.create().build();
}
}
Druid監視設定
@Configuration
public class DruidMonitoringConfig {
@Bean
public ServletRegistrationBean<StatViewServlet> druidStatViewServlet() {
ServletRegistrationBean<StatViewServlet> registrationBean =
new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
Map<String, String> initParams = new HashMap<>();
initParams.put("loginUsername", "admin");
initParams.put("loginPassword", "admin");
initParams.put("resetEnable", "false");
registrationBean.setInitParameters(initParams);
return registrationBean;
}
@Bean
public FilterRegistrationBean<WebStatFilter> druidWebStatFilter() {
FilterRegistrationBean<WebStatFilter> filterBean =
new FilterRegistrationBean<>(new WebStatFilter());
Map<String, String> initParams = new HashMap<>();
initParams.put("exclusions", "*.js,*.css,/druid/*");
filterBean.setInitParameters(initParams);
filterBean.setUrlPatterns(Arrays.asList("/*"));
return filterBean;
}
}
データソースの利用
@Repository
public class UserRepository {
@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDataSource;
@Autowired
@Qualifier("secondaryDataSource")
private DataSource secondaryDataSource;
public List<User> getUsersFromPrimary() {
// プライマリデータソースを使用した処理
return new JdbcTemplate(primaryDataSource).query("SELECT * FROM users", ...);
}
public List<User> getUsersFromSecondary() {
// セカンダリデータソースを使用した処理
return new JdbcTemplate(secondaryDataSource).query("SELECT * FROM users", ...);
}
}
これでブラウザから http://localhost:8080/druid にアクセスすると、Druidの監視画面が表示されます。