当前位置: 首页 > 知识库问答 >
问题:

Spring:如何在Webapp和独立程序中获取应用程序上下文

潘振国
2023-03-14

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

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

现在我的问题是:

我的设置有任何意义吗?

谢谢你的洞察力。

共有1个答案

明越
2023-03-14

>

  • 让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
        }
    }
    

    设置一个独立的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
      }
    
    }
    

    您的设置非常有意义,尽管我无法直观地显示您的整个范围,但您的方法是一个大型模块化spring应用程序的良好起点。

  •  类似资料:
    • 问题内容: 我正在寻找在 独立的(桌面/秋千)* 应用程序中使用 Spring的 示例或教程,我进行了很多搜索,但找不到有用的东西,所有示例和教程均适用于Web应用程序,请告知。 * 问题答案: 使用maven创建独立应用程序,如下所示: 使用Maven创建独立的应用程序 将applicationContext放在类路径中,并按如下所示将其加载到主类中: 在此处查看全文: http://www.d

    • 问题内容: 有没有办法在Spring应用程序中静态/全局地请求ApplicationContext的副本? 假设主类启动并初始化了应用程序上下文,它是否需要通过调用堆栈将其向下传递给需要它的任何类,或者是否有一种方法可以让类要求先前创建的上下文?(我认为必须是单身人士?) 问题答案: 如果需要访问容器的对象是容器中的Bean,则只需实现BeanFactoryAware或ApplicationCon

    • 现在假设我们想要使用 Spark API 写一个独立的应用程序。我们将通过使用 Scala(用 SBT),Java(用 Maven) 和 Python 写一个简单的应用程序来学习。 我们用 Scala 创建一个非常简单的 Spark 应用程序。如此简单,事实上它的名字叫 SimpleApp.scala: /* SimpleApp.scala */ import org.apache.spark.S

    • 我是Spring的初学者。今天,当我在阅读Spring core文档时,我在第1.3章中发现了以下说明。Bean概述 除了包含关于如何创建特定bean的信息的bean定义外,ApplicationContext实现还允许注册(由用户)在容器外部创建的现有对象。这是通过getBeanFactory()方法访问ApplicationContext的BeanFactory来完成的,该方法返回BeanFa

    • 如果主方法不能使用,我需要一些关于替代解决方案的建议,以满足这个要求。

    • 问题内容: 我正在开发一个SpringBoot项目,我想使用来获得其名称的bean 。我已经尝试了许多来自Web的解决方案,但未能成功。我的要求是我要有一个控制器 在控制器内部我有一个方法。我想获取注册bean的实例。我有hibernate实体,我想通过仅在方法中传递类名来获取bean的实例。 如果有人知道解决方案,请提供帮助。 问题答案: 你可以将ApplicationContext自动连接为一