我使用部署在Tomcat中的Hibernate的基于Spring的应用程序。当在容器中执行或调用驻留在Tomcat中的servlet时,这非常正常。它读取所有配置文件,如applicationContext.xml
和其他hibernate文件。但是我必须从Tomcat环境之外的shell脚本执行Java main方法。
所以,我在WAR文件中创建了一个main方法,用于调用各自的方法。
但是当我通过脚本调用applicationContext
时,我得到它。
ApplicationContext appCtx = ApplicationContextProvider.getApplicationContext();
shell脚本如下所示
WAR_PATH="/usr/apache-tomcat-6.0.36/webapps/AdminTool/WEB-INF"
CLASSPATH=$WAR_PATH/classes
java -classpath $CLASSPATH:$WAR_PATH/lib/*: com.mycompany.controller.BatchController "$1"
如何通过脚本调用Spring上下文?
非常感谢
答案 0 :(得分:1)
您必须告诉应用程序如何使用ApplicationContext初始化beanfactory
。取决于您使用的Spring版本。如果您使用的是版本2,请参阅documentation
在Spring 3 Documentation
中实例化弹簧容器ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});
答案 1 :(得分:0)
假设你有一个名为Main的类,带有一个main方法。用以下标记该课程:
@org.springframework.context.annotation.Configuration
@ComponentScan(basePackages = {"com.your_base_package"})
@Component
在main方法中,从:
开始 ApplicationContext ctx = new AnnotationConfigApplicationContext(Controller.class);
ctx.getBean(Controller.class).invokeTransformationService(pipelineId);
@Configuration注释将处理所有注释。需要@ComponentScan来告诉Spring容器将搜索组件的基础包。 @Component使该类成为一个组件,以便可以从ApplicationContext中检索它。 Spring容器将使用这些注释来查找所有@Components,创建一个单例(默认为singleton)并使用ApplicationContext注册它。