springboot 配置文件里部分配置未生效的解决

springboot 配置文件里部分配置未生效

最近用springboot搭了个项目,上线过段时间就会出现卡死,猜测是数据库连接池的连接被占满,用的连接池是druid,于是给项目加上了一个数据库连接池监控。

代码如下:

@Configuration
public class DruidConfiguration {

    /**
     *
     * 注册一个StatViewServlet
     *
     * @return
     *
     */

    @Bean
    public ServletRegistrationBean DruidStatViewServle2() {
        // org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),
                "/druid/*");

        // 添加初始化参数:initParams
        // 白名单:
//        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        // IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not
        // permitted to view this page.
//        servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
        // 登录查看信息的账号密码.
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "admin");
        // 是否能够重置数据.
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }

    /**
     *
     * 注册一个:filterRegistrationBean
     *
     * @return
     *
     */

    @Bean
    public FilterRegistrationBean druidStatFilter2() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        // 添加过滤规则.

        filterRegistrationBean.addUrlPatterns("/*");
        // 添加不需要忽略的格式信息.

        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");
        return filterRegistrationBean;
	}
}

于是重启项目,进入监控页面发现与配置文件里面的部分配置对应不上,当时也没在意,以为是显示的默认配置。过阵子又卡死了,发现等待获取连接的线程数有10来个,果然和前面预料到的一样。于是在配置文件里面各种改数据库连接池的配置。

但,并没有什么卵用,因为项目根本就没有读取到这些配置,这个问题,网上也没能找到类似的文章和解决方案,到现在也没有发现问题出现在哪儿,最后的解决办法是将配置文件里面关于数据库的配置全都注释掉,加上了一个java类来配置

代码如下:

/**
 * druid数据连接池配置
 * @author win 10
 *
 */
@Configuration
public class DatasourceConfig {

 @Bean
 public DruidDataSource druidDataSource() {
        //Druid 数据源配置
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://127.0.0.1/autoorder?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        //初始连接数(默认值0)
        dataSource.setInitialSize(3);
        //最小连接数(默认值0)
        dataSource.setMinIdle(1);
        //最大连接数(默认值8,注意"maxIdle"这个属性已经弃用)
        dataSource.setMaxActive(20);

        dataSource.setMaxWait(30000);
        try {
   dataSource.setFilters("stat,wall,slf4j");
  } catch (SQLException e) {
   e.printStackTrace();
  }
        dataSource.setTestWhileIdle(true);
        dataSource.setValidationQuery("SELECT 1");
        dataSource.setTimeBetweenEvictionRunsMillis(60000);
        dataSource.setMinEvictableIdleTimeMillis(30000);
        dataSource.setTestOnBorrow(true);
        dataSource.setTestOnReturn(false);
        return dataSource;
    }
}

重启项目进入发现配置is working!卡死的问题解决,但是还是未能找到为什么通过resource里面的配置文件部分配置不生效的原因。

贴出配置文件:

# 服务启动端口
server.port=8776
#定时器开关
server.scheduler.syncorder=false
server.scheduler.xepnr=false

# 运维管理相关参数
timeout.host=5000
timeout.project=5000

#spring.http.encoding.force=true
#spring.http.encoding.charset=UTF-8
#spring.http.encoding.enabled=true
#server.tomcat.uri-encoding=UTF-8

spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5

# jdbc_config   datasource
#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/autoorder?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
#spring.datasource.username=root
#spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#spring.datasource.maxActive=20
#spring.datasource.initialSize=1
#spring.datasource.minIdle=3
#spring.datasource.maxWait=20000
#连接空闲时长,超过时则会检查是否可用,与test-while-idle搭配
#spring.datasource.timeBetweenEvictionRunsMillis=60000
#spring.datasource.minEvictableIdleTimeMillis=300000
#连接空闲时检查是否可用
#spring.datasource.testWhileIdle=true
#每次获取连接时 检查是否可用
#spring.datasource.testOnBorrow=true
#每次归还连接时 检查是否可用
#spring.datasource.testOnReturn=fasle
#缓存游标是否开启
#spring.datasource.poolPreparedStatements=false
#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#spring.datasource.filters=stat,wall,slf4j
#验证数据库连接的有效性的sql
#spring.datasource.validationQuery=SELECT 1
#开启连接回收机制
#spring.datasource.removeAbandoned=true
#单位 s
#spring.datasource.removeAbandonedTimeout=180
#spring.datasource.timeBetweenEvictionRunsMillis=300000

# mybatis_config
mybatis.mapper-locations= classpath:org/jc/db/mapper/*Mapper.xml
mybatis.typeAliasesPackage= org.jc.db.entity
#主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
global-config.id-type=0
##字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy= 2
#驼峰下划线转换
db-column-underline= true
#刷新mapper 调试神器
global-config.refresh-mapper= true
#数据库大写下划线转换
#capital-mode: true
#序列接口实现类配置
#key-generator: com.baomidou.springboot.xxx
#逻辑删除配置
#logic-delete-value: 0
#logic-not-delete-value: 1
#自定义填充策略接口实现
#meta-object-handler: com.baomidou.springboot.xxx
#自定义SQL注入器
#sql-injector: com.baomidou.springboot.xxx

## log_config   DEBUG    ERROR    INFO    WARN
#logging.level.root=info
##logging.level.io.z77z.dao= DEBUG
#logging.file= ./logs/express_interf.log
#logging.pattern.console= %d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
#logging.pattern.file= %d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n

spring.http.multipart.maxFileSize=100Mb
spring.http.multipart.maxRequestSize=200Mb

有看到的小伙伴知道这个问题所在的欢迎指点一二。

记录一次创建springboot 配置文件不生效的坑

使用idea自动生成了一个springboot项目。把application.properties改成了application.yml文件。打包成jar包运行。神奇的事情发生了,设置的端口不生效。

解决:

1.自己把yml文件改回properties文件。运行,仍旧不生效

2.上网百度。各种方案。然后还是不行。

3.突发奇想,因为我创建的项目是只需要一个五分钟循环执行的任务,所以我没导入web的maven。故导入。

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-websocket</artifactId>
  </dependency>

问题解决!!!!以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 基于SpringBoot bootstrap.yml配置未生效的解决

    我就废话不多说了,大家还是直接看代码吧~ <!--需要引入该jar才能使bootstrap配置文件生效--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </dependency> 补充知识:SpringBoot不读取bootstrap.yml/properti

  • 使用springBoot项目配置文件位置调整到打包外

    项目目录 问题痛点: 当我们打包一个项目的时候,springboot打包的jar都是把resouce下的配置文件打进去了,这样就没发修改配置文件 解决方案 1.打包的时候指定打包路径 2.将配置文件从resouce下面移出来 这两种方案其实都涉及到一个maven打包配置问题 首先来谈谈将配置文件从resouce下面移出来怎么解决 1在项目src同级别目录建 config目录 2.将resouce下的 application.yaml 文件移到config目录下方便打包后可以配置applicati

  • springboot 如何修改默认端口及application.properties常用配置

    springboot 修改默认端口及application.properties常用配置 Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 其他常用配置: (一).server配置 server.address #指定server绑定的地址 server.compression.enabled #是否开启压缩,默认为false. server.compression.

  • SpringBoot 如何根据不同profile选择不同配置

    SpringBoot 根据不同profile选择不同配置 附上pom的 profiles配置 <build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> </re

  • 使用springboot在工具类中读取配置文件(ClassPathResource)

    springboot工具类中读取配置文件 1.创建配置文件(application.properties) spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.in-memory=true spring.activemq.pool.enabled=false 2.创建工具类(PropertiesUtil.

  • 方便快捷实现springboot 后端配置多个数据源、Mysql数据库

    目录 1)Test1DataSourceConfig.java 2)Test2DataSourceConfig.java 1.修改application.properties 新建 Mapper.实体类 相应的文件夹,将不同数据源的文件保存到对应的文件夹下 # test1 数据库的配置 test1.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver test1.spring.datasource.jdbc-url=jdbc:m

  • springboot如何使用@Value获取配置文件的值

    使用@Value获取配置文件的值 1.创建配置文件(application.properties) spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.in-memory=true spring.activemq.pool.enabled=false 2.创建测试类(MyController.java)

  • springboot如何使用@ConfigurationProperties封装配置文件

    使用@ConfigurationProperties封装配置文件 业务场景: 把配置文件的信息,读取并自动封装成实体类,可以使用@ConfigurationProperties,把同类的配置信息自动封装成实体类. 1.在pom.xml中添加依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor<

  • springboot 配置文件里部分配置未生效的解决

    springboot 配置文件里部分配置未生效 最近用springboot搭了个项目,上线过段时间就会出现卡死,猜测是数据库连接池的连接被占满,用的连接池是druid,于是给项目加上了一个数据库连接池监控. 代码如下: @Configuration public class DruidConfiguration { /** * * 注册一个StatViewServlet * * @return * */ @Bean public ServletRegistrationBean DruidStat

  • 修改Maven settings.xml 后配置未生效的解决

    1. 问题描述: 自己修改了下 ${M2_HOME}/conf/settings.xml中的本地repository地址,但是重新执行mvn的时候发现repository地址并没有改变.那么问题所在? 2. settings.xml文件位置 settings.xml文件一般存在于两个位置: 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: user.home/.m2/settings.xml (note:用户配置优先于全局配置.) 3. 配置优先级: 需要注意的是

  • MySQL修改my.cnf配置不生效的解决方法

    本文实例讲述了MySQL修改my.cnf配置不生效的解决方法.分享给大家供大家参考,具体如下: 一.问题: 修改了 my.cnf 配置文件后,却不生效,这是怎么回事? 二.原因: 我们注意到,这里只说了修改 my.cnf,并没有说清楚其绝对路径是哪个文件.也就是说,有可能修改的不是正确路径下的my.cnf文件. 在MySQL中,是允许存在多个 my.cnf 配置文件的,有的能对整个系统环境产生影响,例如:/etc/my.cnf.有的则只能影响个别用户,例如:~/.my.cnf. MySQL读取各

  • SpringCloud2020整合Nacos-Bootstrap配置不生效的解决

    因为公司现在换成了nacos,所以自己写了demo学习一下.结果第一步就走不下去.在使用nacos-config读取nacos配置时.发现bootstrap.yml一直不生效. 按照网上的解决方法引入依赖. <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </dependency&g

  • springBoot Junit测试用例出现@Autowired不生效的解决

    目录 springBoot Junit测试用例出现@Autowired不生效 1,测试类上面添加支持的注解 2,出现错误 3,注解解释 4,junit测试如何在idea上通过类中方法直接生成测试用例 第一步 第二步 第三步 Junit中@Autowired失效 原因 解决方案 springBoot Junit测试用例出现@Autowired不生效 前提条件: 1,测试类上面添加支持的注解 就能取到spring中的容器的实例,如果配置了@Autowired那么就自动将对象注入. @RunWith(

  • Feign Client 超时时间配置不生效的解决

    目录 Feign Client 超时时间配置不生效 解决方案 问题描述 Feign Client的各种超时时间设置 1. Feign Client Configuration 2. Hystrix Configuration 3. Ribbon Configuration 4. OkHttp Client Configuration 5. 小结一下吧 Feign Client 超时时间配置不生效 解决方案 Feign Client 的 connectTimeout 和 readTimeout 需

  • spring boot中interceptor拦截器未生效的解决

    目录 interceptor拦截器未生效 开始用的spring boot版本为1.5.6 解决方案 HandlerInterceptor实现登录失效拦截等 首先写一个实现HandlerInterceptor的类 然后把这个拦截器注册到spring中 interceptor拦截器未生效 搭建项目时发现拦截器未生效 开始用的spring boot版本为1.5.6 代码如下: @Configuration public class WebConfig extends WebMvcConfigurerA

  • springboot 设置CorsFilter跨域不生效的解决

    目录 设置CorsFilter跨域不生效的解决 问题描述 解决方案 跨域配置CorsFilter不生效原因 order的规则 设置CorsFilter跨域不生效的解决 问题描述 公司的前后端开发项目工程,在本地调试的时候遇到了跨域的问题,同事调我的服务一直提示跨域问题,然后前端nb他自己在哪里做了跨域处理,类似nginx那种,但是我还是百度去看了一下,在一个大佬的博客中发现了解决方案. 问题原因是是写的判断登录的filter影响了登录,原因是的这个filter执行顺序在corsfilter之前导

  • 完美解决linux上启动redis后配置文件未生效的问题

    修改redis.conf后,重启redis,发现修改的配置未生效,原来是需要在启动redis的时候在命令中加上配置文件,命令如下 ./redis-server /usr/local/redis-3.2.8/redis.conf & 仔细阅读配置文件可以开头看到有这样的描述 # Note that in order to read the configuration file, Redis must be # started with the file path as first argument

随机推荐