我正在尝试在其中一个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 变量都为null
,someFolderDirUri
的变量相同。
是否可以在Spring的File
类中获取@Configuration
对象,该对象指向WEB-INF
内的文件或目录?
答案 0 :(得分:1)
您可以从ServletContext访问它:
@Autowired
ServletContext servletContext;
@Bean
public aBean someBean() {
File someFolderDirUrl = new File( servletContext.getRealPath("/WEB-INF/") );
....
}