Failed to bind properties under 'spring.datasource' to javax.sql.DataSource

After checking on the Internet, I didn't find a solution to the problem, so after solving the problem, I sorted it out on the Internet to help my friends in need.

 

When spring boot integrates Druid, it introduces the data source of druid and configures the relevant configuration in the configuration file application.yml

    initialSize: 5

    minIdle: 5

    maxActive: 20

    maxWait: 60000

    timeBetweenEvictionRunsMillis: 60000

    minEvictableIdleTimeMillis: 300000

    validationQuery: SELECT 1 FROM DUAL

    testWhileIdle: true

    testOnBorrow: false

    testOnReturn: false

    poolPreparedStatements: true

#   Configure the filters intercepted by monitoring statistics. After the filters are removed, the monitoring interface sql cannot be counted. The 'wall' is used for the firewall

    filters: stat,wall,log4j

    maxPoolPreparedStatementPerConnectionSize: 20

    useGlobalDataSourceStat: true

    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

Relevant configuration has also been made

@Configuration

public class DruidConfig {

 

	@ConfigurationProperties(prefix = "spring.datasource")

	@Bean

	public DataSource druid() {

		return new DruidDataSource();

	}

 

	// Configure Druid monitoring

	// 1. Configure a management background Servlet

	@Bean

	public ServletRegistrationBean statViewServlet() {

		ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

		Map<String, String> initParams = new HashMap<>();

 

		initParams.put("loginUsername", "admin");

		initParams.put("loginPassword", "123456");

		initParams.put("allow", "");// The default is to allow all access

		initParams.put("deny", "10.18.172.124");

 

		bean.setInitParameters(initParams);

		return bean;

	}

 

	// 2. Configure a web monitoring filter

	@Bean

	public FilterRegistrationBean webStatFilter() {

		FilterRegistrationBean bean = new FilterRegistrationBean();

		bean.setFilter(new WebStatFilter());

 

		Map<String, String> initParams = new HashMap<>();

		initParams.put("exclusions", "*.js,*.css,/druid/*");

 

		bean.setInitParameters(initParams);

 

		bean.setUrlPatterns(Arrays.asList("/*"));

 

		return bean;

	}

}

 

But an error is reported when starting:

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

Description:

Failed to bind properties under 'spring.datasource' to javax.sql.DataSource:

    Property: spring.datasource.filters
    Value: stat,wall,log4j
    Origin: class path resource [application.yml]:24:14
    Reason: org.apache.log4j.Logger

Action:

Update your application's configuration

 

Check the configuration file on line 24 of the configuration file according to the error message. The line code is "filters: stat,wall,log4j"

Reason: org.apache.log4j.Logger, so it is assumed that the related dependency of log4j is reduced and related dependency is introduced into pom
 

<!-- https://mvnrepository.com/artifact/log4j/log4j -->

		<dependency>

		    <groupId>log4j</groupId>

		    <artifactId>log4j</artifactId>

		    <version>1.2.17</version>

		</dependency>

Start again, success!

Keywords: log4j Druid Spring SQL

Added by hexguy on Thu, 07 Nov 2019 22:24:16 +0200