spring:如何掌握Webapp和独立程序中的应用程序上下文

我是Spring框架的新手。我们想在Web应用程序中引入它(3.1),当前在Web层中使用Struts,在业务层中使用服务Facade和业务对象,在持久性层中使用自写的JDBC

DAO(所有这些都紧密耦合!)

我创建了几个.xml配置,一个用于servlet配置,仅扫描com.mydomain.web软件包。服务层appContext-

service.xml上的另一个扫描com.mydomain.bs和.bo包,DAO层appContext-

persistence.xml的另一个扫描.dao包。

我们有四个具有适当项目依赖关系的Eclipse项目:Web,Business,Common(包含域对象,DTO,Exception等),DataAccess。

我想尽可能使用注释,并且已经使用JDBC模板创建了MVC控制器,带有接口的新服务和带有接口的新dao,它们都很好用。

现在我的问题是:

  1. 我们无法一次重新编写所有代码,我们在这里谈论的是更大的代码库。但是,当还需要Spring还不知道的服务和业务对象中还需要新创建的服务时,我该怎么办?它们不是bean或不是由Spring创建的。我将如何获得服务bean?

  2. 我们有几个独立的应用程序用于批处理,定期清理文件系统和数据库表等。它们由cron(UNIX cron)触发,因此具有自己的JVM。给定不同的.xml配置,我如何最好地在这里使用Spring服务?

  3. 我的设置有任何意义吗?

感谢您的见解。

回答:

  1. 让Spring处理所有bean的生命周期是很常见的,否则可能会有些棘手。不是spring bean的对象有望在某个地方初始化。使该初始化程序成为spring bean,并使它了解应用程序上下文

     public class SpringContextHolder implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    public static ApplicationContext getApplicationContext() {

    return applicationContext;

    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

    this.applicationContext = applicationContext;

    }

    public void init(){

    ServiceBean1 srv1 = (ServiceBean1)applicationContext.getBean("serviceBean1");

    myNonSpringObject.setService1(srv1); // Or something

    }

    }

  2. 设置独立的spring应用非常容易。只需创建一个Spring XML并连接您的bean(通过扫描/注释或XML)即可。确实不建议在main方法中执行此操作,但是您可以轻松地弄清楚如何在独立应用程序中进行此设置。请记住,您的应用程序本身不应真正执行太多的生命周期逻辑,而应让Spring来执行。

    public class StandaloneSpringApp{

    public static void main(String[] args){

    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”);

    SomeBeanType bean = (SomeBeanType)ctx.getBean("SomeBeanName");

    bean.doProcessing(); // or whatever

    }

    }

  3. 您的设置非常合理,即使我无法看到您的整个范围,您的方法也是大型模块化弹簧应用的良好起点。

以上是 spring:如何掌握Webapp和独立程序中的应用程序上下文 的全部内容, 来源链接: utcz.com/qa/404436.html

回到顶部