国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

springboot 中 druid+jpa+MYSQL數據庫配置過程

瀏覽:11日期:2023-02-20 11:54:30

Druid來自于阿里的一個開源連接池能夠提供強大的監控和擴展功能,Spring Boot默認不支持Druid和jpa,需要引入依賴。

1、引入依賴包

<!--druid--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.22</version> </dependency> <!--jpa--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>

2、配置application.properties

#druid配置-MYSQLspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/test1?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=truespring.datasource.username=rootspring.datasource.password=123456 # 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.maxActive=20spring.datasource.minIdle=5# 配置獲取連接等待超時的時間spring.datasource.max-wait=60000# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒spring.datasource.time-between-eviction-runs-millis=60000# 配置一個連接在池中最小生存的時間,單位是毫秒spring.datasource.min-evictable-idle-time-millis=300000#檢測連接是否有效的sql,要求是一個查詢語句,常用select ’x’.如果validationQuery為null,testOnBorrow,testOnBorrow,testOnReturn,testWhileIdle都不會起作用。這個可以不配置spring.datasource.validation-query=SELECT ’x’#檢測連接是否有效的超時時間。spring.datasource.validation-query-timeout=60000spring.datasource.test-while-idle=truespring.datasource.test-on-borrow=falsespring.datasource.test-on-return=false# 打開PSCache,并且指定每個連接上PSCache的大小spring.datasource.pool-prepared-statements=truespring.datasource.max-pool-prepared-statement-per-connection-size=20# 配置監控統計攔截的filters,去掉后監控界面sql無法統計,’wall’用于防火墻,#別名方式,擴展插件,監控統計用的filter:stat,日志用的filter:log4j,防御sql注入的filter:wallspring.datasource.filters=stat,wall,slf4j

3、Druid配置信息定制

@Configurationpublic class DruidConfig { @Autowired private DruidDataSourceProperties properties; @Bean(name = 'druidDataSource', initMethod = 'init', destroyMethod = 'close') @Qualifier('druidDataSource') public DataSource dataSource() throws Exception {DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setUrl(properties.getUrl());druidDataSource.setUsername(properties.getUsername());druidDataSource.setPassword(properties.getPassword());druidDataSource.setDriverClassName(properties.getDriverClassName());druidDataSource.setInitialSize(properties.getInitialSize());druidDataSource.setMaxActive(properties.getMaxActive());druidDataSource.setMinIdle(properties.getMinIdle());druidDataSource.setMaxWait(properties.getMaxWait());druidDataSource.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRunsMillis());druidDataSource.setMinEvictableIdleTimeMillis(properties.getMinEvictableIdleTimeMillis());druidDataSource.setValidationQuery(properties.getValidationQuery());druidDataSource.setTestWhileIdle(properties.isTestWhileIdle());druidDataSource.setTestOnBorrow(properties.isTestOnBorrow());druidDataSource.setTestOnReturn(properties.isTestOnReturn());druidDataSource.setPoolPreparedStatements(properties.isPoolPreparedStatements());druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(properties.getMaxPoolPreparedStatementPerConnectionSize());druidDataSource.setFilters(properties.getFilters()); try { if (null != druidDataSource) {druidDataSource.setFilters('wall,stat');druidDataSource.setUseGlobalDataSourceStat(true);//Properties properties = new Properties();//properties.setProperty('decrypt', 'true');//druidDataSource.setConnectProperties(properties);druidDataSource.init(); }} catch (Exception e) { throw new RuntimeException( 'load datasource error, dbProperties is :', e);}return druidDataSource; }}

3、獲取Properties中配置信息

@Configuration@ConfigurationProperties(prefix = 'spring.datasource')public class DruidDataSourceProperties {private String url; private String username; private String password; private String driverClassName; private int initialSize; private int maxActive; private int minIdle; private int maxWait; private long timeBetweenEvictionRunsMillis; private long minEvictableIdleTimeMillis; private String validationQuery; private boolean testWhileIdle; private boolean testOnBorrow; private boolean testOnReturn; private boolean poolPreparedStatements; private int maxPoolPreparedStatementPerConnectionSize; private String filters; public String getUrl() {return url;} public void setUrl(String url) {this.url = url;} public String getUsername() {return username;} public void setUsername(String username) {this.username = username;} public String getPassword() {return password;} public void setPassword(String password) {this.password = password;} public String getDriverClassName() {return driverClassName;} public void setDriverClassName(String driverClassName) {this.driverClassName = driverClassName;} public int getInitialSize() {return initialSize;} public void setInitialSize(int initialSize) {this.initialSize = initialSize;} public int getMaxActive() {return maxActive;} public void setMaxActive(int maxActive) {this.maxActive = maxActive;} public int getMinIdle() {return minIdle;} public void setMinIdle(int minIdle) {this.minIdle = minIdle;} public int getMaxWait() {return maxWait;} public void setMaxWait(int maxWait) {this.maxWait = maxWait;} public long getTimeBetweenEvictionRunsMillis() {return timeBetweenEvictionRunsMillis;} public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;} public long getMinEvictableIdleTimeMillis() {return minEvictableIdleTimeMillis;} public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;} public String getValidationQuery() {return validationQuery;} public void setValidationQuery(String validationQuery) {this.validationQuery = validationQuery;} public boolean isTestWhileIdle() {return testWhileIdle;} public void setTestWhileIdle(boolean testWhileIdle) {this.testWhileIdle = testWhileIdle;} public boolean isTestOnBorrow() {return testOnBorrow;} public void setTestOnBorrow(boolean testOnBorrow) {this.testOnBorrow = testOnBorrow;} public boolean isTestOnReturn() {return testOnReturn;} public void setTestOnReturn(boolean testOnReturn) {this.testOnReturn = testOnReturn;} public boolean isPoolPreparedStatements() {return poolPreparedStatements;} public void setPoolPreparedStatements(boolean poolPreparedStatements) {this.poolPreparedStatements = poolPreparedStatements;} public int getMaxPoolPreparedStatementPerConnectionSize() {return maxPoolPreparedStatementPerConnectionSize;} public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;} public String getFilters() {return filters;} public void setFilters(String filters) {this.filters = filters;} public DruidDataSourceProperties() {// TODO Auto-generated constructor stub} public DruidDataSourceProperties(String url, String username, String password, String driverClassName, int initialSize, int maxActive, int minIdle, int maxWait, long timeBetweenEvictionRunsMillis, long minEvictableIdleTimeMillis, String validationQuery, boolean testWhileIdle, boolean testOnBorrow, boolean testOnReturn, boolean poolPreparedStatements, int maxPoolPreparedStatementPerConnectionSize, String filters) {this.url = url;this.username = username;this.password = password;this.driverClassName = driverClassName;this.initialSize = initialSize;this.maxActive = maxActive;this.minIdle = minIdle;this.maxWait = maxWait;this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;this.validationQuery = validationQuery;this.testWhileIdle = testWhileIdle;this.testOnBorrow = testOnBorrow;this.testOnReturn = testOnReturn;this.poolPreparedStatements = poolPreparedStatements;this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;this.filters = filters;}}

如果需要Druid的監控統計功能在配置代碼中加入以下代碼:

@Beanpublic ServletRegistrationBean druidServlet() {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), '/druid/*');// IP白名單 (沒有配置或者為空,則允許所有訪問)servletRegistrationBean.addInitParameter('allow', '127.0.0.1');// IP黑名單(共同存在時,deny優先于allow)//servletRegistrationBean.addInitParameter('deny', '');//控制臺管理用戶servletRegistrationBean.addInitParameter('loginUsername', 'admin');servletRegistrationBean.addInitParameter('loginPassword', 'admin');//是否能夠重置數據 禁用HTML頁面上的“Reset All”功能servletRegistrationBean.addInitParameter('resetEnable', 'false');return servletRegistrationBean;} @Beanpublic FilterRegistrationBean filterRegistrationBean() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());filterRegistrationBean.addUrlPatterns('/*');filterRegistrationBean.addInitParameter('exclusions', '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*');return filterRegistrationBean;}

訪問地址:http://127.0.0.1:8080/druid, 使用配置的賬號密碼登錄即可查看數據源及SQL統計等監控信息。

4、jpa配置

@Configuration@EnableTransactionManagement@EnableJpaRepositories(entityManagerFactoryRef = 'entityManagerFactory',transactionManagerRef = 'transactionManager',basePackages = {'*.dao'})//指定需要掃描的dao所在包public class RepositoryConfig { @Autowired private JpaProperties jpaProperties; @Autowired @Qualifier('druidDataSource') private DataSource druidDataSource; @Bean(name = 'entityManager') @Primary public EntityManager entityManager(EntityManagerFactoryBuilder builder) {return entityManagerFactory(builder).getObject().createEntityManager(); } /** * 指定需要掃描的實體包實現與數據庫關聯 * @param builder * @return */ @Bean(name = 'entityManagerFactory') @Primary public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {return builder.dataSource(druidDataSource).properties(getVendorProperties(druidDataSource)).packages('*.entity')//指定需要掃描的entity所在包.build(); } /** * 通過jpaProperties指定hibernate數據庫方言以及在控制臺打印sql語句 * @param dataSource * @return */ private Map<String, String> getVendorProperties(DataSource dataSource) {Map<String, String> map = jpaProperties.getProperties();map.put('hibernate.dialect', 'org.hibernate.dialect.MySQL8Dialect');map.put('hibernate.show_sql', 'true');return map; } /** * 創建事務管理 * @param builder * @return */ @Bean(name = 'transactionManager') @Primary PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(entityManagerFactory(builder).getObject()); } }

到此這篇關于springboot 中 druid+jpa+MYSQL數據庫配置的文章就介紹到這了,更多相關springboot druid+jpa+MYSQL配置內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 97人摸人人澡人人人超一碰 | 日韩视频中文字幕 | 中文字幕一区二区视频 | 欧美xxxxx九色视频免费观看 | 久久国产视屏 | 亚洲在线观看免费视频 | 日本精品久久久久中文字幕 1 | 国产精品欧美一区二区 | 免费看孕妇毛片全部播放 | 最新国产精品视频免费看 | 欧美中文字幕一区二区三区 | 国产一级生活片 | 日韩精品一区二区在线观看 | 美国一级毛片oo | 亚洲一级毛片欧美一级说乱 | 欧美另类视频一区二区三区 | 亚洲成人福利网站 | 欧美成人ass| 日韩在线视频一区二区三区 | 亚洲免费精品视频 | 国产精品极品美女自在线看免费一区二区 | 国产一有一级毛片视频 | 成人a毛片高清视频 | 国产精品国内免费一区二区三区 | 免费看美女午夜大片 | 亚洲国产精品一区二区久久 | 1024手机基地在线看手机 | 国产成人99久久亚洲综合精品 | 欧美一区二区三区在线观看免费 | 特级aa毛片在线播放 | 国产一区二区三区免费看 | 国产欧美综合一区二区 | 日本亚欧乱色视频在线观看 | 亚洲国产精品a一区二区三区 | 欧美性一级 | 一级做a爰片久久毛片唾 | 久久一区二区三区99 | 高清波多野结衣一区二区三区 | 日韩第一视频 | 一个人看的日本免费视频 | 91成人国产福利 |