Spring 应用程序的正确入口点是什么?



我正在使用 Ant 通过 XML 文件启动 Spring 应用程序。XML 文件创建几个 bean 并启用组件扫描。

初始化 Spring 容器并创建所有 Spring bean 后,我显然需要实际运行应用程序要运行的代码。我尝试将代码添加到其中一个 bean 上的 @PostConstruct 方法中,但这会导致奇怪的问题,因为在整个 Spring 应用程序完成实例化之前@PostConstruct

调用它。

在 Spring 容器完成启动后实际运行您想要运行的内容的 Spring 应用程序中的main()方法相当于什么?

要在应用程序上下文中加载的所有 xml 合并.xml位于类路径中

例如:应用程序上下文.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC  "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <import resource="classpath:DataSourceContext.xml"/>
    <import resource="classpath:HibernateContext.xml"/>
    <import resource="classpath:PropertyContext.xml"/>
</beans>

使用应用程序上下文在自定义 MyBeanLoader 中加载所有 xml.xml

public class MyBeanLoader {
    public static void main(String args[]){
        ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
    }
}

现在将其作为 ant 中的入门主类文件.xml

<target name="jar">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="com.MyBeanLoader"/>
        </manifest>
    </jar>
</target>

如果你想在 Spring 的上下文启动后运行逻辑,你可以使用 ApplicationListener 和事件 ContextRefreshedEvent。

 @Component
 public class StartupApplication implements 
 ApplicationListener<ContextRefreshedEvent> {
 @Override
 public void onApplicationEvent(ContextRefreshedEvent event) {
    // call you logic implementation
}

}

希望能解决您的问题

相关内容

  • 没有找到相关文章

最新更新