Coder Social home page Coder Social logo

druid-spring-boot's People

Contributors

drtrang avatar lihengming avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

druid-spring-boot's Issues

意见征集

druid-spring-boot 自 2017/7/11 发布以来已迭代了 8 个 Release 版本,期间对现有代码的不断完善并持续增加新特性,使该项目愈发友好。

目前 druid-spring-boot 的 latest version 为 1.1.3,拥有以下特性:

  • druid 的全功能自动配置
  • druid 的全配置自动提示
  • 重新设计的 ConfigFilter 功能,仅需根据提示设置参数即可
  • 定制化 druid 的特性,提供 DruidDataSourceCustomizer 接口用于支持自定义 druid 的配置,并拥有最高优先级
  • 多数据源的完美支持,可逐级注入配置且无需编写代码,由 Starter 自动完成配置发现至数据源初始化的全部过程
  • 恢复排除 DataSourceAutoConfiguration 后失效的 import schema 功能
  • 附加的 actuator 模块暴露出 endpoint 和 metadata 数据,支持对接下游监控系统
  • 细致完善的单元测试和代码示例
  • 整洁的目录结构、包路径、代码风格,最合适的实现方式,层出不穷的代码技巧……

由于鄙人能力有限,为了该项目的持续发展,现特向广大开发者征集意见与建议,如当前存在的 bug、希望增加的新特性、更合理的实现方式、更规范的项目结构、甚至于更友好的变量命名……来者不拒。

希望大家踊跃留言,以期在使用过程中得到更高的舒适度以及造福更多的人。

exclusions设置无效

 web-stat:
      enabled: true
      url-patterns: /*
      # 该属性设置好像无效
      exclusions: 99.js

这个不是有官方的 starter 么?

这个和Druid 官方的 springboot-starter 有什么区别,我看配置项都一样

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

希望能够提供完整的2.0下文档

spring boot 从1到2 升级变化挺大,不同版本之间的兼容性也容易出问题,配置文件,引用包不同,都可能出现各种问题。

如果能够提供完整的2.0下的用法,同时理清跟官网的关系就更好了。持续关注中。

什么时候针对boot2.0升级一下啊

java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@61fafb74: startup date [Fri Nov 24 13:24:53 CST 2017]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:420)
at org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:95)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:240)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:576)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:552)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:953)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:521)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.destroySingletons(FactoryBeanRegistrySupport.java:227)
at org.springframework.beans.factory.support.AbstractBeanFactory.destroySingletons(AbstractBeanFactory.java)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:960)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1035)
at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:562)
at org.springframework.context.support.AbstractApplicationContext.jrLockAndRefresh(AbstractApplicationContext.java)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:751)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:387)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1245)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1233)
at com.riversdm.platform.admin.PlatformAdmin.main(PlatformAdmin.java:76)
13:24:54.619 [main] ERROR o.s.boot.SpringApplication - Application startup failed

exclusions 貌似未生效

druid 1.2.4 starter版本

server:
  # 服务监听端口
  port: 8777
  servlet:
    # 系统接口前缀
    context-path: /api
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initialSize: 5
      minIdle: 5
      maxActive: 100
      maxWait: 60000
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      validationQueryTimeout: 10000
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 过滤器设置
      filters: stat,wall,log4j2
      # StatViewServlet配置
      stat-view-servlet:
        enabled: true
        # 内置监控页面的地址
        url-pattern: /druid/*
        loginUsername: blank
        loginPassword: blank
        reset-enable: false
      # WebStatFilter配置
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/api/druid/*,/api/swagger-ui.html,/api/swagger-ui/*,/api/swagger-resources/**,/api/v2/api-docs,/api/v3/api-docs,/api/webjars/**"

image
尝试过 无论是带/api 还是不带/api前缀都是这样

提一个建议,关于配置文件绑定顺序的问题

min-evictable-idle-time-millis: 100000
max-evictable-idle-time-millis: 200000

你好,例如有上面这种配置,会导致单元测试失败,因为使用动态绑定会按ASCII的顺序绑定配置属性,也就是说max 是先于 min执行的,这也是Druid官方Starter放弃动态绑定这种便捷方式的原因之一,如果你有更好的解决方案,可以探讨下。

再引用的时候出现这个问题

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.github.trang.druid.DruidAutoConfiguration]; nested exception is java.lang.ClassCastException: java.lang.UnsupportedClassVersionError cannot be cast to [Ljava.lang.Object;
_我采用的是_properties配置方式
Boot版本1.5.4.RELEASE

druid-spring-boot-starter 没有对 spring.datasource.type 进行支持,没有对DataSourcePoolMetrics 进行支持?

首先,我想问一下,你这里是druid 数据源连接池的官方代码仓库吗?


是不是可以对这两个进行官方支持呀,这个并不难,代码也没多少。

特别是spring.datasource.type 由于spring boot 的内嵌数据源由它来进行配置的,如果引入了druid 就没法使用spring boot 提供的配置内嵌数据源了。有时候切换还相当麻烦,如果提供了该支持更好。

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.9</version>
            </dependency>
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class Application3402 {
    public static void main(String[] args) {
        SpringApplication.run(Application3402.class, args);
    }
}
/**
 * 实现支持: spring.datasource.type 配置项
 * druid 原本没有对该配置项进行支持。
 */
@Configuration
@ConditionalOnMissingBean(DataSource.class)
@AutoConfigureBefore({DataSourceAutoConfiguration.class})
@Import(SuyhDataSourceAutoConfiguration.Druid.class)
@Slf4j
public class SuyhDataSourceAutoConfiguration {

    @ConditionalOnClass(DruidDataSource.class)
    @ConditionalOnMissingBean(DataSource.class)
    @ConditionalOnProperty(name = "spring.datasource.type",
            havingValue = "com.alibaba.druid.pool.DruidDataSource",
            matchIfMissing = true)
    protected static class Druid {

        @Bean(initMethod = "init")
        @ConfigurationProperties(prefix = "spring.datasource.druid")
        public DataSource dataSource() {
            log.info("Init DruidDataSource");
            return DruidDataSourceBuilder.create().build();
        }
    }
}

对于DataSourcePoolMetrics 的支持也是比较简单

遭遇Canonical names should be kebab-case ('-' separated)

Hi~

我在Spring Boot 2.1下使用这个组件时遇到个问题:

***************************
APPLICATION FAILED TO START
***************************

Description:

Configuration property name 'spring.datasource.druid.data-sources.commonMaster' is not valid:

    Invalid characters: 'M'
    Bean: additionConfigController
    Reason: Canonical names should be kebab-case ('-' separated), lowercase alpha-numeric characters and must start with a letter

Action:

Modify 'spring.datasource.druid.data-sources.commonMaster' so that it conforms to the canonical names requirements.

提示属性名格式不正确。确认了一下yml里面写的,的确是小写中横线格式的:

spring:
  datasource:
    druid:
      data-sources:
         common-master:
...

跟了一下,是初始化数据源对象时候,bind属性操作使用的beanName拼接,而非最初配置使用的key:

Binder.get(environment).bind(PREFIX + "." + beanName, Bindable.ofInstance(druidDataSource));

所以这里要么想办法把先前的key传过来,要么再做一次驼峰转小写中横线😂

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.