مقدمة
لم أقم بتحديث مقالات SPRING Boot Series لفترة طويلة. هل تعتقد أنك مشغول؟ من الممكن أيضًا أن يكون تركيز بعض الوقت على جوانب أخرى. في الآونة الأخيرة ، يحتاج المشروع إلى تطوير برنامج صغير ، والذي يستخدم فقط Spring Boot لتنفيذ خدمة خلفية. ستتم مشاركة حالات الرمز ذات الصلة لاحقًا حتى لا يتم الخلط بين الجميع عند تقديم الخدمات الخلفية للبرنامج المصغر.
تحت SPRING BOOT ، يتم توفير العديد من تجمعات الاتصال المتاحة (DBCP ، DBCP2 ، Tomcat ، Hikari) افتراضيًا. بالطبع ، لا يدعم Druid Druid. Druid يأتي من مجموعة اتصال مفتوحة المصدر من علي بابا. يوفر وظائف مراقبة ممتازة للغاية. اسمحوا لي أن أشارككم كيفية الاندماج مع SPRING BOOT.
بيئة الإصدار
Boot Spring 1.5.2.release ، Druid 1.1.6 ، JDK1.7
تكامل النظام
أضف pom.xml التبعية:
<!-jpa-> <reperency> <roupiD> org.springframework.boot </groupId> <Stifactid> spring-boot-starter-data-jpa </stifactid> </rependency> <!-mysql-> <sependency> </groupidid> <StifactId> mysql-connector-java </stifactid> </sependency> <!-druid-> <redency> <roupend> com.alibaba </rougeid> <StifactId> druid </stifactid> <sored>
تكوين Application.Properties:
#data source spring.datasource.url = jdbc: mysql: //192.168.1.66: 3306/spring_boot؟ characterencoding = utf-8 & usessl = falspring.datasource.username = rootspring.da tasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.type = com.alibaba.druid.pool.druiddatasour# تهيئة الحجم ، الحد الأدنى ، الحد الأقصى لـ Spring.Datasource.InitialSize = 1Spring.datasource.minidle = 3Spring.Datasource.Maxactive = 20# تكوين الوقت للوصول إلى ما يحتاج إلى اتصال ، في مذنبة: spring.datasource.TimeBetweenevictionRunsMillis = 60000# قم بتكوين الحد الأدنى للوقت للاتصال بالبقاء على قيد الحياة في البلياردو ، في milliseconds spring.datasource.minevictableDletimIllis = 30000spring.datasource.validationQuery = Select " تكوين المرشحات لمراقبة إحصائيات تم اعتراضها. بعد إزالته ، لا يمكن حساب واجهة المراقبة SQL. يتم استخدام "الجدار" في جدار الحماية spring.datasource.filters = stat ، الجدار ، وظيفة slf4j# open mergesql من خلال خاصية connectProperties ؛ سجلات SQL البطيئة spring.datasource.connectionProperties = druid.stat.mergesql = true ؛ druid.stat.slowsqlmillis = 5000
تكوين ملف YML (اختر أحد الاثنين أعلاه)
الربيع: DataSource: url: jdbc: mysql: //192.168.1.66: 3306/spring-boot؟ useUnicode = true & districtoding = utf-8 & usessl = false username: root password-class-class-name: com.mysql.jdbc.driver platform: mysql com.alibaba.druid.pool.druiddataSource # فيما يلي إعداد تكميلي لمجموعة الاتصال ، والذي يتم تطبيقه على جميع مصادر البيانات أعلاه # تهيئة الحجم ، الحد الأدنى ، الحد الأقصى للتشجيع: 1 minidle: 3 maxaction: 20 # تكوين الوقت للحصول على وقت انتظار الاتصال maxwait: 60000 في millisecond timeBetweenevictionRunsmillis: 60000 # قم بتكوين الحد الأدنى للوقت للبقاء في مجموعة MineVictableDletimeMIllis: 30000 ValideDquery: حدد 'x' testwhileIdle 20 # تكوين المرشحات لمراقبة إحصائيات اعتراض. بعد إزالة واجهة المراقبة SQL ، لا يمكن حساب واجهة المراقبة. يتم استخدام "الجدار" في مرشحات جدار الحماية: STAT ، الجدار ، وظيفة SLF4J # Open MergesQL من خلال خاصية ConnectProperties ؛ SQL SQL ConnectionProperties: druid.stat.mergesql = true ؛ druid.stat.slowsqlmillis = 5000
تكوين وظيفة مراقبة وإحصائيات Druid
استيراد java.sql.sqlexception ؛ استيراد javax.sql.datasource ؛ استيراد org.slf4j.logger org.springframework.boot.web.servlet.filterregistrationBean ؛ استيراد org.springframework.boot.web.servlet.servletregistrationbean ؛ استيراد org.springframework.context.annotation.bean com.alibaba.druid.pool.druiddatasource ؛ استيراد com.alibaba.druid.support.http.statviewservlet ؛ استيراد com.alibaba.druid.support.http.webstatfilter ؛/*** alibaba connection connection* 2018*/@configurationpublic class druidConfiguration {private static final logger = loggerfactory.getLogger (druidConfiguration.class) ؛ Static Final String db_prefix = "spring.datasource" ؛ bean public servletregistrationBean druidservlet () {logger.info ("init druid servlet configuration") ؛ servletregistrationBean servletregistrationBean = new ServleTregistrationBean (New StatViewServlet () ، "/druid/*") ؛ // IP القائمة البيضاء (لا يوجد تكوين أو فارغ ، كل الوصول مسموح به) servletregistrationBean.addinitParameter ("السماح" ، "") ؛ // IP Blacklist (تنكر الأسبقية على السماح عند التعايش) //servletregistrationbean.addinitparameter("deny "،" 192.168.1.100 ") ؛ // إدارة وحدة التحكم servletregistrationbean.addinitparameter ("loginusername" ، "admin") ؛ servletregistrationBean.addinitParameter ("loginpassword" ، "admin") ؛ // هل من الممكن إعادة تعيين البيانات وتعطيل "إعادة التعيين على صفحة HTML All" ServleTregistrationBean.AddinitParameter ("Resetenable" ، "false") ؛ إرجاع servletregistrationBean ؛ } bean publicregistrationbean filterregistrationBean () {filterRegistrationBean filterregistrationBean = new filterregistrationBean (webstatfilter () جديد) ؛ FilterRegistrationBean.Addurlpatterns ("/*") ؛ FilterRegistrationBean.AddinitParameter ("الاستثناءات" ، "*.js ،*. gif ،*. jpg ،*. png ،*. إرجاع FilterregistrationBean ؛ } configurationProperties (prefix = db_prefix) class idatasourceProperties {private string url ؛ اسم المستخدم الخاص بالسلسلة الخاصة ؛ كلمة مرور السلسلة الخاصة ؛ سلسلة خاصة driverClassName ؛ Private Int تهيئة ؛ خاص int minidle ؛ الخاص int maxaxive ؛ خاص int maxwait ؛ int int intenevitionrunsmillis ؛ خاص int minevictableDletimemillis ؛ سلسلة خاصة ValityQuery ؛ اختبار منطقي خاص. اختبار منطقي خاص ؛ اختبار منطقي خاص ؛ pollepreparedstatements المنطقية الخاصة ؛ الخاص int maxpoolpropedstatePerConnectionSize ؛ مرشحات السلسلة الخاصة سلسلة ConnectionProperties الخاصة ؛ bean public dataSource dataSource () {druiddatasource dataSource = new DruidDataSource () ؛ datasource.seturl (url) ؛ datasource.setUserName (اسم المستخدم) ؛ datasource.setPassword (كلمة المرور) ؛ datasource.setDriverClassName (driverClassName) ؛ // التكوين dataSource.setInitialSize (التهيئة) ؛ datasource.setminidle (minidle) ؛ datasource.setMaxActive (maxaCive) ؛ datasource.setMaxWait (maxwait) ؛ datasource.SettimeBetweenevictionRunsmillis (timeBetweenevictionRunsmillis) ؛ datasource.setMineVictableDletimemillis (MineVictableIdletimemillis) ؛ datasource.setValidationQuery (ValideDquery) ؛ datasource.settesthileIdle (testhileIdle) ؛ datasource.settestonborrow (testOnBorrow) ؛ datasource.settestonreturn (testOnreturn) ؛ datasource.setPoolPrepedStatements (poolpreparedstatements) ؛ datasource.setMaxPoolPrepedStatePerConnectionSize (maxpoolprepedstateMentPerConnectionize) ؛ حاول {datasource.setFilters (المرشحات) ؛ } catch (sqlexception e) {system.err.println ("مرشح تهيئة تكوين druid:" + e) ؛ } datasource.setConnectionProperties (connectionProperties) ؛ إرجاع مصدر البيانات ؛ } السلسلة العامة geturl () {return url ؛ } public void seturl (url url) {this.url = url ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } السلسلة العامة getDriverClassName () {return driverClassName ؛ } public void setDriverClassName (String driverClassName) {this.driverClassName = driverClassName ؛ } public int getInitialSize () {return ignsize ؛ } public void setInitialSize (int ignsize) {this.initialsize = initialsize ؛ } 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 getTimeBetweenevictionRunsmillis () {return timetweenevictionRunsmillis ؛ } public void setTimeBetweenevictionRunsMillis (int intewevithingRunsmillis) {that.timetweetweenevictionRunsmillis = timeBetweenevictionRunsmillis ؛ } public int getMineVictableDletimemillis () {return minevictableIdletimemillis ؛ } public void setMineVictableDletimemillis (int minevictableDletimemillis) {this.minevictableDletImemillis = minevictableDletimemillis ؛ } السلسلة العامة getValidationQuery () {return ValidentQuery ؛ } public void setValidationQuery (سلسلة التحقق من الصحة) {this.validationQuery = ValideDquery ؛ } boolean public istesthwhileIdle () {return testwhileIdle ؛ } public void settest WhileIdle (test testhileIdle) {this.testwhileIdle = testwhileIdle ؛ } boolean public istestonborrow () {return testOnBorrow ؛ } public void settestonborrow (Boolean testOnBorrow) {this.testonBorrow = testOnBorrow ؛ ) } public void setTestOnreturn (Boolean testOnreturn) {this.testOnreturn = testOnreturn ؛ } boolean public ISPOOLPREPEREDSTATEMENTS () {return poolpreparedStatements ؛ } public void setPoolPropedStatements (boolean poolpreparedstatements) {this.poolPreparedStatements = poolprepedstatements ؛ } public int getMaxPoolPreparedStatePerConnectionSize () {return maxpoolpropedstateMentPerConnectionsize ؛ } public void setMaxPoolPrepedStatePerConnectionSize (int maxpoolpropedstateMentPerConnectionsize) {this.maxpoolpropedStatePerConnectionize = maxPoolPropedStateMentPerConnectionsize ؛ } السلسلة العامة getFilters () {return filters ؛ } public void setFilters (سلسلة مرشحات) {this.filters = filters ؛ } السلسلة العامة getConnectionProperties () {return connectionProperties ؛ } public void setConnectionProperties (سلسلة connectionProperties) {this.connectionProperties = connectionProperties ؛ }}}ابدأ التطبيق ، عنوان الوصول: http: // localhost: 8080/druid/، أدخل كلمة مرور الحساب المكوّنة وتسجيل الدخول ، ويمكنك عرض مصدر البيانات وإحصائيات SQL وغيرها من المراقبة. العروض كما يلي:
بالطبع ، يوفر Alibaba أيضًا إصدار Druid's Springboot المتكامل (Druid-Spring-Boot-Starter) ، يمكنك الرجوع إلى الرابط التالي.
الرجوع إلى:
https://github.com/alibaba/druid/tree/master/druid-spring-obot-starter
https://github.com/alibaba/druid/wiki
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.