Tomcat8 Springboot не читает application.properties - PullRequest
0 голосов
/ 02 января 2019

Я впервые работаю с Java Spring над личным проектом, и я не могу заставить какие-либо свойства в application.properties работать правильно. Я упростил его до этого контрольного примера, и он, похоже, ничего не делает:

application.properties

logging.level.root=WARN

AppInitalizer.java:

import javax.servlet.Filter;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


@SpringBootApplication
@ConfigurationProperties
public class AppInitializer
    extends AbstractAnnotationConfigDispatcherServletInitializer {

    private static final Logger log = LoggerFactory.getLogger(AppInitializer.class);

    @Override
    protected Class<?>[] getRootConfigClasses() {
        log.debug("This is a debug message");
        log.error("This is an error message");
        return new Class[] {};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Filter[] getServletFilters() {
        return new Filter[] {};
    }
}

Журнал после развертывания:

20:08:26.113 [http-nio-8080-exec-32] DEBUG AppInitializer - This is a debug message
20:08:26.114 [http-nio-8080-exec-32] ERROR AppInitializer - This is an error message

Два файла развернуты в одном каталоге в корне пути к классам.

Должно отображаться только второе сообщение журнала, но я не могу позаботиться о первом.

Соответствующая конфигурация ivy.xml:

<!-- Spring Framework -->
<dependency org="org.springframework"
            name="spring-webmvc" rev="5.0.9.RELEASE"/>
<!-- Logging -->
<dependency org="log4j" name="log4j" rev="1.2.17"/>

Редактировать: я переключил свой логгер на slf4j и все еще не повезло.

Edit2: добавлены зависимости

Edit3: я просматривал журнал и нашел это:

10:28:22.628 [http-nio-8080-exec-114] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
10:28:22.634 [http-nio-8080-exec-114] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'servletConfigInitParams' with lowest search precedence
10:28:22.634 [http-nio-8080-exec-114] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'servletContextInitParams' with lowest search precedence
10:28:22.636 [http-nio-8080-exec-114] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'jndiProperties' with lowest search precedence
10:28:22.636 [http-nio-8080-exec-114] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'systemProperties' with lowest search precedence
10:28:22.636 [http-nio-8080-exec-114] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'systemEnvironment' with lowest search precedence
10:28:22.636 [http-nio-8080-exec-114] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Initialized StandardServletEnvironment with PropertySources [StubPropertySource@36449077 {name='servletConfigInitParams', properties=java.lang.Object@24214aae}, StubPropertySource@1983551321 {name='servletContextInitParams', properties=java.lang.Object@6e836355}, JndiPropertySource@219519027 {name='jndiProperties', properties=org.springframework.jndi.JndiLocatorDelegate@234fc705}, MapPropertySource@23923818 {name='systemProperties', properties={awt.toolkit=sun.awt.X11.XToolkit, java.specification.version=10, file.encoding.pkg=sun.io, sun.cpu.isalist=, sun.jnu.encoding=UTF-8, java.class.path=/usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar, java.vm.vendor=Oracle Corporation, sun.arch.data.model=64, java.vendor.url=http://java.oracle.com/, catalina.useNaming=true, user.timezone=America/Los_Angeles, os.name=Linux, java.vm.specification.version=10, sun.java.launcher=SUN_STANDARD, user.country=US, sun.boot.library.path=/usr/lib/jvm/java-11-openjdk-amd64/lib, sun.java.command=org.apache.catalina.startup.Bootstrap start, jdk.debug=release, sun.cpu.endian=little, user.home=/var/lib/tomcat8, user.language=en, java.specification.vendor=Oracle Corporation, java.naming.factory.url.pkgs=org.apache.naming, java.version.date=2018-07-17, java.home=/usr/lib/jvm/java-11-openjdk-amd64, ignore.endorsed.dirs=, file.separator=/, java.vm.compressedOopsMode=32-bit, line.separator=
10:28:22.639 [http-nio-8080-exec-114] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Replacing PropertySource 'servletContextInitParams' with 'servletContextInitParams'
10:28:22.639 [http-nio-8080-exec-114] INFO org.springframework.web.context.support.AnnotationConfigWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Tue Jan 15 10:28:22 PST 2019]; root of context hierarchy

Кажется, ни один из источников свойств не загружается из classpath, где у меня есть application.properties.

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Пожалуйста, используйте slf4j.Logger вместо apache.commons.logging

0 голосов
/ 02 января 2019

Используйте slf4j's LoggerFactory вместо org.apache.commons.logging.LogFactory:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private final Logger log = LoggerFactory.getLogger(this.getClass());

Или статический регистратор:

private static final Logger log = LoggerFactory.getLogger(AppInitializer.class);
0 голосов
/ 02 января 2019
  1. Spring также представляет новую аннотацию @PropertySource в качестве удобного механизма добавления источников свойств в среду. Эта аннотация должна использоваться вместе с конфигурацией на основе Java и аннотацией @Configuration:

    @ конфигурации @PropertySource ( "путь к классам: foo.properties") открытый класс AppInitializer { // ... }

  2. Еще один очень полезный способ регистрации нового файла свойств - использование заполнителя, позволяющего динамически выбирать нужный файл во время выполнения; например:

    @ PropertySource ({ "путь к классам: упорство - $ {envTarget: MySQL} .properties" })

  3. Вы можете использовать в XML, новые файлы свойств могут быть сделаны доступными для Spring через элемент пространства имен:

Файл foo.properties должен быть помещен в / src / main / resources, чтобы он был доступен в пути к классам во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...