如何从Spring java配置@Configuration类从WEB-INF获取资源?

时间:2014-09-19 14:32:11

标签: java spring spring-mvc configuration

我正在尝试在其中一个Spring WEB-INF类中创建@Bean期间在@Configuration目录下加载特定资源。

据我所知@ImportResource仅用于Spring xml配置,而不用于其他文件。 使用ClassLoader的方法不起作用并始终返回null

例如:

    @Bean
    public aBean someBean() {
        final URL someFolderDirUrl = WebConfig.class.getClassLoader().getResource("WEB-INF/someFolder");
        final URL someFolderDirUrl2 = WebConfig.class.getClassLoader().getResource("/someFolder");
        final URL someFolderDirUrl3 = WebConfig.class.getClassLoader().getResource("/WEB-INF/someFolder");
        final URL someFolderDirUrl4 = WebConfig.class.getClassLoader().getResource("someFolder");

        // final URI someFolderDirUri = new URI("file:/WEB-INF/someFolder");

        if(modulesDirUrl != null) {
            File someFolderDirFile;
            try {
                someFolderDirFile = new File(someFolderDirUrl.toURI());
            } catch(final URISyntaxException e) {
                someFolderDirFile = new File(someFolderDirUrl.getPath());
            }

            return new aBean(someFolderDirFile);
        }

        return new aBean();
    }

最后,所有 someFolderDirUrlX 变量都为nullsomeFolderDirUri的变量相同。

是否可以在Spring的File类中获取@Configuration对象,该对象指向WEB-INF内的文件或目录?

1 个答案:

答案 0 :(得分:1)

您可以从ServletContext访问它:

@Autowired
ServletContext servletContext;

@Bean
public aBean someBean() {
     File someFolderDirUrl = new File( servletContext.getRealPath("/WEB-INF/") );
     ....
}