Idea中找不到Java Application 的xml配置文件問題研究
問題:
在用Idea創建一個Java Application工程的時候,應用了Spring框架,但是Spring的xml配置文件找不到。檢查代表不是代碼的問題。費了我好長時間才解決。
出現問題,我對Idea中加載各類資源文件(.xml、.properties等)作了研究總結。爲了說明問題,下面創建一個Spring的test工程,目標就是運行後在控制檯打印一個「Hello World!」,着重看Idea中資源的配置方法。以及不一樣配置方法會引發的不用效應。
環境:
IntelliJ IDEA 5.1.2 (我認爲最好用的版本,如今7.0剛出來)
J2SDK 1.5
Spring framework 1.2.8
WIN2003
搭建測試項目:
依賴的包
commons-logging.jar
spring-beans.jar
spring-context.jar
spring-core.jar
源代碼:
一、Bean類HelloBean :
public class HelloBean {
private String helloWord;
public void setHelloWord(String helloWord) {
this.helloWord = helloWord;
}
public String getHelloWord() {
return helloWord;
}
}
二、主類SpringDemo :
public class SpringDemo {
// public static void main(String[] args) {
// Resource rs =
// new FileSystemResource("beans-config.xml");
// BeanFactory factory =
// new XmlBeanFactory(rs);
//
// HelloBean hello =
// (HelloBean) factory.getBean("helloBean");
// System.out.println(hello.getHelloWord());
// }
public static void main(String args[]){
// ApplicationContext context = new FileSystemXmlApplicationContext("beans-config.xml");
ApplicationContext context = new ClassPathXmlApplicationContext("beans-config.xml");
HelloBean hello = (HelloBean)context.getBean("helloBean");
System.out.println(hello.getHelloWord());
}
}
三、Spring的配置文件beans-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"[url]http://www.springframework.org/dtd/spring-beans.dtd[/url]
">
<beans>
<bean id="helloBean"
class="lavasoft.springtest.HelloBean">
<property name="helloWord">
<value>Hello World!</value>
</property>
</bean>
</beans>
Idea配置:
下面是Idea項目的目錄結構:
配置jar和資源文件:
目錄類型設置圖:
按照上圖配置後,運行結果以下:
研究結果:
目錄有三種類型,在圖中已經給出了文字說明。
下面主要看res目錄:
一、這個目錄通常命名爲res,以表示資源。
二、若這個目錄設置爲「Sources」類型,則在工程編譯後,resorce目錄下的文件會原封不動的複製到編譯後生成文件的目錄,在此爲classes目錄,而且在Idea的工程面板中能夠看到res目錄的存在。
三、這個目錄設置爲普通文件夾類型(淺×××的文件包),則在工程編譯後,resorce目錄下的文件不會複製到classes目錄,而且在Idea的工程面板中看不到此目錄。
四、res目錄下的文件要能被程序找到,則須要在Idea中配置res目錄到classpath下面。參看第二個圖。
五、這個配置方法適合其餘的類型的配置文件好比.properties文件,原理就是將這些文件加載到calsspath中,這樣就能夠在Idea中調試運行了。