序文
Spring Bootシリーズの記事を長い間更新していません。あなたは忙しいと思いますか?しばらく前の焦点が他の側面にある可能性もあります。最近、プロジェクトはミニプログラムを開発する必要があります。ミニプログラムは、バックエンドサービスを実装するためにSpring Bootを使用するだけです。関連するコードケースは後で共有され、ミニプログラムバックエンドサービスを行うときに全員が混乱しないようにします。
Spring Bootでは、いくつかの使用可能な接続プール(DBCP、DBCP2、Tomcat、Hikari)がデフォルトで提供されます。もちろん、ドルイドはドルイドをサポートしていません。 Druidは、Alibabaのオープンソース接続プールから来ています。非常に優れた監視機能を提供します。 Spring Bootと統合する方法をあなたと共有させてください。
バージョン環境
Spring Boot 1.5.2.Release、Druid 1.1.6、JDK1.7
システム統合
pom.xml依存関係を追加:
<! - jpa-> <dependency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-data-jpa </artifactid> </dependency> <! <artifactid> mysql-connector-java </artifactid> </dependency> <! - druid-> <dependency> <groupid> com.alibaba </groupid> <artifactid> druid </artifactid> <バージョン> 1.1.6 </version> </dependency>
application.propertiesを構成します:
#dataソースspring.datasource.url = jdbc:mysql://192.168.1.66:3306/spring_boot?charatereNcoding = utf-8&usessl = falsspring.datasource.username = rootspring.da tasource.password = rootspring.datasource.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.type = com.alibaba.druid.pool.druiddatasource#サイズ、最小、最大spring.datasource.initialsize = 1spring.datasource.minidle = 3spring.datasource.maxactive = 20#datasource.datasource.datasource.maxwait = 60000#configure configure configure configure configure configure configure configure configure configut spring.datasource.timebetweenevictionrunsmillis = 60000#プールで生き残るための接続の最小時間を構成します。 'x'spring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falspring.datasource.testOnReturn=false# Open PSCache and specify the size of PSCache on each connection spring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20#監視統計を傍受するためのフィルターを構成します。削除した後、監視インターフェイスSQLをカウントできません。 「ウォール」はファイアウォールに使用されますspring.datasource.filters = stat、wall、slf4jスローSQLレコードspring.datasource.connectionproperties = druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
YMLファイルを構成します(上記の2つのいずれかを選択してください)
スプリング:DataSource:URL:JDBC:mysql://192.168.1.66:3306/spring-boot?useunicode = true&charatereCoding = utf-8&usessl = false username:ルートパスワード:ルートドライバークラス名:com.mysql.jdbc.driverプラットフォーム:mysqlタイプ: com.alibaba.druid.pool.druiddatasource#以下は接続プールの補足設定であり、上記のすべてのデータソースに適用されます。 millisecond timebetheevictionrunsmillis:60000#プールで生き残るための最小時間を構成するginevictableidletimemillis:30000 validationquery:select 'x' testwhileidle:true testonborrow:false testonreturn:false#open pscache and pshize of pscache on pshise poopreprepedatements:true poolpreadettatementements 20#監視統計インターセプトのためにフィルターを構成します。監視インターフェイスSQLを削除した後、監視インターフェイスをカウントできません。 「ウォール」は、ファイアウォールフィルターに使用されます。統計、壁、SLF4J#connectPropertiesプロパティを介してmergESQL関数を開きます。スローSQLレコードConnectionProperties:Druid.stat.MergesQl = true; Druid.Stat.SlowsQlMillis = 5000
Druidの監視および統計機能を構成します
java.sql.sqlexception; Import javax.sql.datasource; Import org.slf4j.logger; Import org.slf4j.loggerfactory; import org.springframework.boot.context.properties.configurationporties; Import; org.springframework.boot.web.servlet.filterregistrationbean; Import org.springframework.boot.web.servlet.servletregistrationbean; Import org.springframework.context.annotation.bean; Import org.springframework.context.context.configuation com.alibaba.druid.pool.druiddatasource;インポートcom.alibaba.druid.support.http.statviewservlet;インポートcom.alibaba.druid.support.http.webstatfilter; 2018*/@configurationPublic class DruidConfiguration {private static final logger logger = loggerFactory.getLogger(DruidConfiguration.Class);プライベート静的最終文字列db_prefix = "spring.datasource"; @bean public servletregistrationbean druidservlet(){logger.info( "init druid servlet configuration"); ServleTregistrationBean ServletRegistrationBean = new ServletRegistrationBean(new StatViewServlet()、 "/Druid/*"); // ip whitelist(構成なしまたは空で、すべてのアクセスが許可されています)servletregistrationbean.addinitparameter( "lock"、 ""); // IPブラックリスト(DENYは、共存するときに許可を優先します) // Console Management User ServletRegistrationBean.AddinitParameter( "logoglusername"、 "admin"); servletregistrationbean.addinitparameter( "loginpassword"、 "admin"); //データをリセットし、「HTMLページのすべてのリセット」を無効にすることは可能ですか? return servletregistrationbean; } @bean public filterRegistrationBean FilterRegistrationBean(){filterRegistrationBean FilterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); filterregistrationbean.addurlpatterns( "/*"); filterregistrationbean.addinitparameter( "除外"、 "*.js、*。gif、*。jpg、*。png、*。css、*。ico、/druid/*"); FilterRegistrationBeanを返します。 } @configurationProperties(prefix = db_prefix)class idatasourceproperties {private string url;プライベート文字列ユーザー名;プライベート文字列パスワード。 Private String DriverClassName; Private int Iniversize; Private int minidle; Private int maxactive; Private int maxwait; private int timebetweenevictionrunsmillis; private int minevictableidletimemillis; Private String ValidationQuery;プライベートブールテストWhiredle;プライベートブールのtestonborrow;プライベートブールのTestOnreturn;プライベートブールプールプレパードステートメント。 private int maxpoolpreparedStatementperConnectionSize;プライベート文字列フィルター。プライベート文字列ConnectionProperties; @Bean Public DataSource DataSource(){DruiddataSource DataSource = new DruiddataSource(); dataSource.seturl(url); DataSource.setUsername(username); dataSource.setPassWord(パスワード); DataSource.setDriverClassName(DriverClassName); //構成DataSource.setInitialSize(hientsize); DataSource.setMinidle(Minidle); DataSource.setMaxactive(maxactive); DataSource.setMaxWait(MaxWait); dataSource.settimebetweenevictionrunsmillis(timevethictionrunsmillis); dataSource.setMineVictableIdletimemillis(minevictableidletimemillis); dataSource.setValidationQuery(ValidationQuery); dataSource.settestwhileidle(testhiledle); dataSource.settestonborrow(testonborrow); DataSource.SetteStonreturn(TestOnreturn); DataSource.setPoolPreparedStatements(PoolPreparedStatements); DataSource.setMaxPoolPreparedStatementPerConnectionSize(MaxPoolPreparedStatementPerConnectionSize); try {dataSource.setFilters(フィルター); } catch(sqlexception e){system.err.println( "Druid構成初期化フィルター:" + e); } dataSource.setConnectionProperties(ConnectionProperties); DataSourceを返します。 } 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(){パスワードを返します。 } 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 Iniversize; } public void setInitialSize(int Iniverysize){this.InitialSize = IniverySize; } public int getMinidle(){return minidle; } public void setMinidle(int minidle){this.minidle = minidle; } public int getMaxactive(){return maxactive; } public void setMaxactive(int maxactive){this.maxactive = maxactive; } public int getMaxWait(){return maxwait; } public void setmaxwait(int maxwait){this.maxwait = maxwait; } public int getTimeBetInevictionRunsMillis(){return timevetwenevictionrunsmillis; } public void setimebethevictionrunsmillis(int timevevictionrunsmillis){this.timeBetwedRunsMillis = timeBethevevictionRunsMillis; } public int getMineVictableIdletimemillis(){return minevictableidletimemillis; } public void setMinevictableIdletimemillis(int minevictableidletimemillis){this.minevictableidletimemillis = minevictableidletimemillis; } public string getValidationQuery(){return validationQuery; } public void setValidationQuery(String ValidationQuery){this.validationQuery = validationQuery; } public boolean iStesthiledle(){return testwhileidle; } public void settest whileidle(boolean testhileidle){this.testhileidle = testhileidle; } public boolean istestonborrow(){testonborrowを返します。 } public void setestestonborrow(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 maxpoolpreparedStateperConnectionSize; } public void setMaxpoolpreparedStatementperConnectionSize(int maxpoolpreparedStatementperconnectionSize){this.maxpoolpreparedStateperconnectionSize = maxpoolpreparedStatementementementementementementementementementementementementementementementementementsize; } public string getFilters(){return filters; } public void setFilters(string filters){this.filters = filters; } public string getConnectionProperties(){return ConnectionProperties; } public void setConnectionProperties(String ConnectionProperties){this.ConnectionProperties = connectionProperties; }}}アプリケーションの開始、アクセスアドレス:http:// localhost:8080/druid/、構成されたアカウントパスワードを入力してログインすると、データソースとSQL統計およびその他の監視を表示できます。レンダリングは次のとおりです。
もちろん、AlibabaはDruidのSpringboot Integratedバージョン(Druid-Spring-Boot-Starter)も提供しているため、次のリンクを参照できます。
参照:
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
https://github.com/alibaba/druid/wiki
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。