我正在尝试创建读取属性文件的注释解析器。结构如下:
- annotationParserModule
- declaration of interace
- annotationParser
现在我的应用具有如下结构:
- main
- java
- resources
- .properties file
我通过Maven包含了commentParserModule,所以如果我没有记错的话,我的项目中会包含jar fire。
但是我需要在annotationParserModule
提供的jar之外读取属性文件,这可能吗?如果是这样,实现此目标的正确方法是什么?
感谢帮助。
答案 0 :(得分:1)
如果您要读取的资源包含在应用程序的类路径中(例如,在jar中,在WEB-INF/lib
文件夹中,则是一个-cp
传递给java
命令的文件夹等等。)您可以使用Class
类的getResourceAsStream方法读取文件。
为您的案例提供示例,其中包含以下文件夹:
- main
- java
- resources
- yourconfig.properties
在您的YourAnnotationParser
代码中,您可以:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("yourconfig.properties");
如果文件是嵌套的:
- main
- java
- resources
- iamafolder
- yourconfig.properties
所以:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("iamafolder/yourconfig.properties");
顺便说一句,这是一个非常简单的响应,该代码适用于常见情况,它在幕后所做的工作比“读取jar之外的文件”要复杂得多,但是要完全理解它,您需要寻找Java的方式类加载器和类路径起作用。
如果文件在java类路径之外,则可以使用File
类或URL
类来读取内容。
答案 1 :(得分:0)
在applicationcontext.xml中,您可以添加bean以从jar中读取属性文件
<bean id="com.mybean"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:/resource.properties</value>
</list>
</property>
</bean>
,此ID将是对另一个bean的引用
<bean id="com.mybean1">
class="com.dependent.jar.classname">
<property name="properties" ref="com.mybean" />
</bean>