尝试使用类路径Xml应用程序上下文
它是一个独立的 XML 应用程序上下文,从类路径中获取上下文定义文件,将普通路径解释为包含包路径的类路径资源名称(例如,“mypackage/myresource.txt”)。
对于测试工具以及嵌入在 JAR 中的应用程序上下文非常有用。
以下是您可以执行的操作:
为自己创建一个包含以下内容的测试类:
package com.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new
ClassPathXmlApplicationContext("/com/test/appConfig.xml");
Integer someIntBean = (Integer) context.getBean("testBean");
System.out.println(someIntBean.intValue()); // prints 100, as you will see later
}
}
现在创建名为 appConfig 的 bean 应用程序配置文件.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="testBean" class="java.lang.Integer">
<constructor-arg type="int" value="100" />
</bean>
</beans>
在名为 的包中创建这些文件,这些文件彼此相邻。将类路径引用添加到弹簧 jar 中,或将它们打包到您自己的单个 jar 文件中,该文件应如下所示:com.test
test.jar --- com
| |--- test
| |--- appConfig.xml
| |--- Test.class
|
|-- META-INF
| |--- MANIFEST.MF
|
|-- org
| |--- springframework
| |--- ...
| |--- ...
|-- ....
在您的清单文件中,您将拥有以下内容(与尾随的空行一起使用):
Main-Class: com.test.Test
就是这样。
当您运行文件(双击或)时,您应该看到屏幕上打印了100个。以下是我从执行它中得到的(请注意我上面所说的100 - 在最后一行):java -jar test.jar
Feb 23, 2011 11:29:18 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@ca2dce:
display name [org.springframework.context.support.ClassPathXmlApplicationContext@ca2dce];
startup date [Wed Feb 23 23:29:18 PST 2011]; root of context hierarchy
Feb 23, 2011 11:29:18 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [com/test/appConfig.xml]
Feb 23, 2011 11:29:20 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@ca2dce]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@199f91c
Feb 23, 2011 11:29:20 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@199f91c:
defining beans [testBean]; root of factory hierarchy
100
附言:您不必绝对将Spring罐内容包含在您自己的罐子中。运行应用时,可以在类路径上使用它们。我把它们放成那样,因为你提到了一个罐子。基本上,这就是你需要的:
test.jar --- com
| |--- test
| |--- appConfig.xml
| |--- Test.class
|
|-- META-INF
|--- MANIFEST.MF