成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

springboot 中 druid+jpa+MYSQL數(shù)據(jù)庫配置過程

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

Druid來自于阿里的一個開源連接池能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能,Spring Boot默認(rèn)不支持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# 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒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# 配置監(jiān)控統(tǒng)計攔截的filters,去掉后監(jiān)控界面sql無法統(tǒng)計,’wall’用于防火墻,#別名方式,擴(kuò)展插件,監(jiān)控統(tǒng)計用的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的監(jiān)控統(tǒng)計功能在配置代碼中加入以下代碼:

@Beanpublic ServletRegistrationBean druidServlet() {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), '/druid/*');// IP白名單 (沒有配置或者為空,則允許所有訪問)servletRegistrationBean.addInitParameter('allow', '127.0.0.1');// IP黑名單(共同存在時,deny優(yōu)先于allow)//servletRegistrationBean.addInitParameter('deny', '');//控制臺管理用戶servletRegistrationBean.addInitParameter('loginUsername', 'admin');servletRegistrationBean.addInitParameter('loginPassword', 'admin');//是否能夠重置數(shù)據(jù) 禁用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, 使用配置的賬號密碼登錄即可查看數(shù)據(jù)源及SQL統(tǒng)計等監(jiān)控信息。

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(); } /** * 指定需要掃描的實體包實現(xiàn)與數(shù)據(jù)庫關(guān)聯(lián) * @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數(shù)據(jù)庫方言以及在控制臺打印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; } /** * 創(chuàng)建事務(wù)管理 * @param builder * @return */ @Bean(name = 'transactionManager') @Primary PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(entityManagerFactory(builder).getObject()); } }

到此這篇關(guān)于springboot 中 druid+jpa+MYSQL數(shù)據(jù)庫配置的文章就介紹到這了,更多相關(guān)springboot druid+jpa+MYSQL配置內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
91麻豆精品在线观看| 中日韩男男gay无套| 在线一区亚洲| 国产三级久久久| 国产乱色国产精品免费视频| 一本到不卡免费一区二区| 亚洲一卡二卡三卡四卡| 亚洲国产精品一区二区第一页| 26uuu国产在线精品一区二区| 国产乱理伦片在线观看夜一区| 欧美性做爰猛烈叫床潮| 免费看精品久久片| 欧美在线观看一二区| 男人的j进女人的j一区| 色94色欧美sute亚洲13| 亚洲一二三四在线| 国产欧美三级| 日韩美女久久久| 在线观看成人av| 亚洲特黄一级片| 亚洲无毛电影| 国产精品不卡在线| 激情综合在线| 亚洲欧美一区二区三区孕妇| 在线视频观看日韩| 亚洲精品第一国产综合野| 国产精品一国产精品k频道56| 亚洲精品国产无套在线观| 亚洲精品久久| 亚洲成av人影院| 久久精品国语| 蜜臀99久久精品久久久久久软件| 欧美亚洲综合久久| 国精产品一区一区三区mba桃花 | 日本在线不卡视频一二三区| 一本大道av一区二区在线播放 | 日韩高清中文字幕一区| 欧美图区在线视频| 国产风韵犹存在线视精品| 精品国产一区二区三区忘忧草| 99久久综合精品| 国产日本欧美一区二区| 欧美婷婷在线| 亚洲精品乱码久久久久久日本蜜臀| 亚洲在线观看| 男人操女人的视频在线观看欧美| 在线播放视频一区| 成人国产免费视频| 欧美国产成人在线| 在线视频精品| 久久国产乱子精品免费女| 日韩午夜av一区| 色综合亚洲欧洲| 中文字幕欧美日韩一区| 亚洲人成久久| 亚洲444eee在线观看| 欧美日韩三级一区二区| 国产精品69毛片高清亚洲| 久久久久一区二区三区四区| 今天的高清视频免费播放成人| 亚洲高清免费在线| 欧美精品精品一区| 欧美1区视频| 亚洲午夜成aⅴ人片| 欧美群妇大交群中文字幕| 成人晚上爱看视频| 国产精品五月天| 久久本道综合色狠狠五月| 国产老女人精品毛片久久| 中文字幕欧美激情一区| 亚洲永久字幕| 国产成人精品三级| 亚洲少妇屁股交4| 在线观看网站黄不卡| av亚洲精华国产精华精| 亚洲精品日韩一| 欧美日韩另类国产亚洲欧美一级| 99免费精品在线| 亚洲成a人在线观看| 日韩免费高清视频| 国产亚洲一区二区三区在线播放| 日本午夜一区二区| 久久久综合网站| 亚洲欧美精品在线观看| 国产精品亚洲第一区在线暖暖韩国| 久久久久久久久99精品| 亚洲专区免费| 国产乱码精品一区二区三| 亚洲视频在线观看一区| 欧美日本在线播放| 亚洲高清在线| 国产一区二区三区国产| 亚洲免费观看高清完整版在线观看熊| 欧美日韩你懂的| 亚洲国产高清一区| 国产99久久久久久免费看农村| 亚洲欧美激情插| 日韩一区二区三区在线| 国产日韩欧美一区二区三区在线观看 | 久久久成人网| 91在线观看下载| 亚洲成人免费视| 久久丝袜美腿综合| 色婷婷精品大在线视频| 午夜久久99| 久久综合综合久久综合| 中文av一区特黄| 欧美亚洲精品一区| 激情欧美日韩一区| 国产一区二区三区高清播放| 日韩一区欧美一区| 欧美一区二区黄| 性欧美长视频| 欧美激情 亚洲a∨综合| 精品一区二区在线免费观看| 亚洲免费色视频| 久久一夜天堂av一区二区三区| 色悠久久久久综合欧美99| 91亚洲国产成人精品一区二区三 | 欧美日韩一区二区三区视频| 好吊视频一区二区三区四区| 国产在线播精品第三| 一区二区视频在线看| 久久综合中文字幕| 欧美日韩日日摸| 国产嫩草一区二区三区在线观看| 91麻豆精品一区二区三区| 精品一二三四在线| 亚洲国产精品一区二区www在线| 国产欧美日韩卡一| 日韩一区二区三区在线观看| 色婷婷激情一区二区三区| 尤妮丝一区二区裸体视频| 成人高清伦理免费影院在线观看| 日本特黄久久久高潮| 一色屋精品亚洲香蕉网站| 欧美v日韩v国产v| 欧美在线啊v一区| 亚洲一区二区在| 狠狠色综合网| 99这里都是精品| 国产乱码精品1区2区3区| 视频一区二区中文字幕| 亚洲精品视频免费观看| 中日韩免费视频中文字幕| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲精品国产a| 国产日产亚洲精品系列| 91精品国产综合久久精品性色| 羞羞答答国产精品www一本| 亚洲激情一区二区| 欧美日韩视频| 欧美1区2区| 91麻豆精品在线观看| 成人黄色软件下载| 国产福利一区二区三区在线视频| 久久精品国产在热久久| 日韩中文字幕区一区有砖一区| 亚洲国产裸拍裸体视频在线观看乱了| 最新中文字幕一区二区三区| 久久毛片高清国产| 精品日韩欧美在线| 91精品在线免费| 欧美日韩在线亚洲一区蜜芽| 色视频一区二区| 久久久一二三| 一本大道久久精品懂色aⅴ| 久久久水蜜桃| 色综合av在线| 欧美亚洲精品一区| 欧美日韩极品在线观看一区| 欧美日韩在线播放三区四区| 欧美日韩亚洲综合| 欧美日韩国产精品成人| 欧美日韩国产小视频| 欧美日韩国产bt| 欧美久久久一区| 日韩一二三四区| 欧美tickling网站挠脚心| 日韩视频在线观看一区二区| 日韩欧美黄色影院| 欧美mv日韩mv| 久久你懂得1024| 国产亚洲精久久久久久| 中文字幕不卡三区| 综合色天天鬼久久鬼色| 综合久久综合久久| 亚洲美女在线国产| 亚洲午夜日本在线观看| 亚洲一区二区欧美激情| 亚洲a一区二区| 美国毛片一区二区三区| 久久国产综合精品| 国产精品综合一区二区三区| 国产成人夜色高潮福利影视| av中文一区二区三区| 欧美日韩爆操| 亚洲精品看片| 老司机午夜精品视频| 欧美无砖砖区免费|