springboot+jpa+druid模板

springboot环境搭建

  git地址:https://github.com/wangruyu1/springboot_demo.git 下的springboot_jpa_druid。
  在resources下创建application.yaml,application-dev.yaml,config/application-datasource-dev.yaml(config下的文件能被指定加载,加载顺序看日志.).
application.yaml:

// 激活dev文件
spring:
  profiles:
    active: dev

application-dev.yaml:

// 激活config目录下的文件,分别是数据源配置,jpa配置,tomcat配置.
spring:
  profiles:
    include: 
    - datasource-dev
    - jpa
    - tomcat

application-datasource-dev.yaml:

// 数据源配置
#配置详解https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8
#密码加密https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&useSSL=true
    username: root
    #加密的密码,原始值是空串""
    password: YdwoSUF2sC3V18JArpFojeLHzKO7WIZePmPI5KpvWcz37VtgqSnTzWldcjQ8UdLXAJr/d5Q6UVCSKy5KGoF5WQ==
    driverClassName: com.mysql.jdbc.Driver
    #密码公钥
    public.key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKuMFryYhnHAuA5p1TgEIOT9q3jTKCM5B2/ydvyAzRS+0YYruKRG6/HUPhDopmqrYqEi74kFO8kMThb7fG6mAb8CAwEAAQ==
    #stat=StatFilter,用于sql监控,wall=WallFilter,防止sql注入,config用于密码加密
    filters: stat,wall,slf4j,config
    #配置初始化大小、最小、最大 
    initialSize: 5
    minIdle: 5
    maxActive: 20
    #配置获取连接等待超时的时间
    maxWait: 60000
    #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    #配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    #合并sql;慢sql为时间超过5000ms;指定密码解密;密码公钥
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrypt=true;config.decrypt.key=${spring.datasource.public.key}

JPA配置

  jpa也就是数据库访问层。需要配置数据源,表与实体的映射关系。
  MyDataSource.java:

// 注解配置
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
// 代理方式
@EnableTransactionManagement(proxyTargetClass = true)
// 数据库访问的类所在的包
@EnableJpaRepositories(basePackages = { "com.springboot.druid.demo.repository" })
// 实体类所在的包
@EntityScan(basePackages = { "com.springboot.druid.demo.bean" })
public class MyDataSource {

	@Bean
	@Primary
	PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
		return new PersistenceExceptionTranslationPostProcessor();
	}

	@Primary
	@Bean(name = "springPoiDataSource")
	@ConfigurationProperties("spring.datasource") // 该注解可以自动注入对象的属性(对应配置文件spring.datasource下的属性)
	public DruidDataSource newsPoiDataSource() {
		return new DruidDataSource();
	}
}

druid相关配置

数据源配置

  详细信息见上面的数据源配置文件。

数据源web界面配置

  主要是sql监控,可以查出sql执行较慢的语句.
  DruidConfiguration.java

// web界面配置
@Configuration
public class DruidConfiguration {
	private static final Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);
	@Bean
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public ServletRegistrationBean druidServlet() {
		logger.info("init Druid Servlet Configuration ");
		ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),
				"/druid/*");
		// IP白名单
		servletRegistrationBean.addInitParameter("allow", "");
		// IP黑名单(共同存在时,deny优先于allow)
		servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
		// 控制台管理用户
		servletRegistrationBean.addInitParameter("loginUsername", "admin");
		servletRegistrationBean.addInitParameter("loginPassword", "admin");
		// 是否能够重置数据 禁用HTML页面上的“Reset All”功能
		servletRegistrationBean.addInitParameter("resetEnable", "false");
		return servletRegistrationBean;
	}
	@SuppressWarnings({ "rawtypes", "unchecked" })
	@Bean
	public FilterRegistrationBean filterRegistrationBean() {
		FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
		filterRegistrationBean.addUrlPatterns("/*");
		filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
		return filterRegistrationBean;
	}

}

web监控界面图片

  启动程序,浏览器访问http://localhost:port/druid即可.登录界面
sql查询记录界面
  可以看见其实druid还能监控很多信息,请求URI等等。所以说druid真的很强大。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值