有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java PropertySource在DispatcherServletInitializer中不工作

我有一个servlet扩展AbstractAnnotationConfigDispatcherServletInitializer,其中我需要使用@PropertySource读取外部属性文件,如下所示。但是,它返回NullPointerException。 如果我在其他bean类上这样做,那么它工作正常,可以成功地读取外部属性文件

我只想在启动servlet时从外部文件中获取一个键值对。我也试过ResourceLoader,但不知何故还是不起作用

我花了一整天的时间在谷歌上搜索了很多博客,但仍然没有找到解决方法。 谁能给我一些线索吗

非常感谢

myenv。属性

system.env=DEV

WebAppInitializer。java

@Configuration
@PropertySource(value = "file:C:\\myenv.properties")
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    private static final Logger LOGGER = LoggerFactory.getLogger(WebAppInitializer.class);

    @Autowired
    Environment env;

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);

        String systemEnv = env.getProperty("system.env");
        LOGGER.info("systemEnv: {}", systemEnv);
        servletContext.setInitParameter("spring.profiles.active", systemEnv );
    }

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

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

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

共 (0) 个答案