问题标签 [applicationcontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
21 回答
280525 浏览

spring - BeanFactory 与 ApplicationContext

我对 Spring 框架还很陌生,我一直在使用它并将一些示例应用程序放在一起,以评估 Spring MVC 以用于即将到来的公司项目。到目前为止,我真的很喜欢我在 Spring MVC 中看到的东西,看起来很容易使用,并鼓励你编写对单元测试非常友好的类。

作为一个练习,我正在为我的一个示例/测试项目编写一个主要方法。我不清楚的一件事是BeanFactory和之间的确切区别ApplicationContext- 适合在哪些条件下使用?

我理解ApplicationContextextends BeanFactory,但如果我只是写一个简单的 main 方法,我需要ApplicationContext提供的额外功能吗?究竟提供了什么样的额外功能ApplicationContext

除了回答“我应该在 main() 方法中使用哪个”之外,关于在这种情况下我应该使用哪种实现,是否有任何标准或指南?我的 main() 方法是否应该被编写为依赖于 XML 格式的 bean/应用程序配置 - 这是一个安全的假设,还是我将用户锁定在特定的东西上?

这个答案在 Web 环境中是否会发生变化 - 如果我的任何课程需要了解 Spring,他们是否更有可能需要ApplicationContext

谢谢你的帮助。我知道很多这些问题可能在参考手册中得到了解答,但是如果没有用细齿梳通读手册,我很难找到这两个接口的明确细分以及每个接口的优缺点。

0 投票
5 回答
4284 浏览

java - 如何配置 Spring 以节省尽可能多的内存?

我们正在一个有内存限制的半嵌入式设备上部署一个应用程序。为了尽可能地保存我们正在分析应用程序的堆转储并攻击最大的消费者。

我们将 Spring 2.5 与 Spring DM 1.1 一起使用,我们注意到我们的一些具有更复杂 Spring 上下文的包正在使用相当多的内存,因为 Spring 似乎保留了包含从 XML 解析的所有 BeanDefinitions 的整个对象图. 我认为一旦应用程序初始化并注入所有内容,大部分这些都是不必要的。

Spring 是否有允许控制这种行为的配置选项?在一些低内存模式下运行?扔掉所有不必要的东西?用计算时间换大小?

0 投票
6 回答
331175 浏览

spring - bean初始化完成后如何调用方法?

我有一个用例,我只需要在加载 ApplicationContext 时调用 bean 中的(非静态)方法一次。如果我为此使用 MethodInvokingFactoryBean 可以吗?或者我们有更好的解决方案?

作为旁注,我使用 ConfigContextLoaderListener 在 Web 应用程序中加载应用程序上下文。并且想要,如果 bean 'A' 被实例化,只需调用一次 methodA() 。

这怎么能做得很好?

0 投票
2 回答
1731 浏览

spring - 在应用程序之间共享 Spring Security 配置

我是 Spring 的新手,我从 Apress 的 Spring Recipes 书中获得了大部分知识。

我在一个 web 应用程序中使用 Spring Security 进行了 LDAP 身份验证。但是,我想从这个 web 应用程序中删除我的应用程序上下文 bean 和属性文件,并以某种方式将它们外部化,以便我们所有的 web 应用程序都可以引用相同的 bean。因此,当我们需要更改某些内容(例如 ldapuser 或 ldap url)时,我们将其更改在一个地方,其余的应用程序就知道了。

更新 我已经实现了Reloadable Spring Properties,当它们来自的文件被触摸时,它会重新加载属性。但是,我使用的是加密属性,所以下面是我在 Reloadable Spring Properties 之上创建的类。

重新加载EncryptablePropertyPlaceholderConfigurer.java

以下是我在securityContext.xml中使用它的方式:

0 投票
2 回答
2083 浏览

java - Spring Application Context 在构造函数中可用

我在尝试从 spring 使用构造函数参数实例化的 bean 中的 spring 应用程序上下文创建 bean 时遇到问题。

我已经实现了ApplicationContextAware接口,但它在创建实例后填充了上下文(很明显)。

但是,如果您需要从构造函数中获取 bean,并且我说的是在运行时定义的可变数量的对象,那么正确的方法是什么?

0 投票
2 回答
2483 浏览

java - 在 Web 应用程序的运行时动态加载 Spring 上下文

我正在将使用 Spring Framework 的标准 Java 应用程序转换为 Web 应用程序。此应用程序根据运行时参数加载新的 Spring 上下文,这是使用ClassPathXmlApplicationContext/FileSystemXmlApplicationContext.

所以我的问题是如何在 Web 应用程序中做同样的事情,因为我已经配置了我的 web.xml 并添加了 Spring 监听器,如下所示:

另一个问题,我的部署环境在 Tomcat 5.5 上,在春季上下文加载期间我看不到任何日志记录以了解问题所在。

0 投票
1 回答
1630 浏览

java - Spring 3 Java Config:导入的@Configuration 没有增强?

我有一个应用程序,我正在尝试将最新的 Spring 3 约定与基于注释的配置一起使用,但我也有使用构造函数注入的遗留类。根据 Spring 文档,您应该只调用创建该依赖项的方法并将其传递给需要它的构造函数。当 Configuration 类被增强时,这似乎有效,但如果你 @Import Configuration 类,它似乎没有被增强,所以它可能会注入非自动装配的实例。

具体来说,如果我的一个存储库被构造函数注入到另一个 bean 中,并且该存储库与另一个 bean 定义在同一个配置类中(我知道存储库应该在它们自己的配置类中),那么它不会与注入实体管理器。

我的豆子:

还有两个这样的配置类:

我的主要看起来像这样:

如果我加载 MyImportedConfig.class,我会得到正确的输出(即,如果我从 MyImportedConfig 中调用该方法,则单例类是相同的):

但是,如果我更改 AnnotationConfigApplicationContext 以加载导入 MyImportedConfig 的 MyConfig,则会发生这种情况:

这是预期的行为吗?我当前的解决方法是将需要将 EntityManager 注入另一个 Configuration 类的任何内容移动,导入它,然后在需要构造函数注入的 Configuration 类中设置 @Autowired 依赖项。

我在 AnnotationConfigWebApplicationContext 中加载它,如果我在 contextConfigLocation 中指定每个配置类,那么所有配置类都得到了适当的增强,但这似乎没有使用“模块化”@Import 功能。

0 投票
4 回答
128010 浏览

spring - 如何在使用 @RunWith 和 @ContextConfiguration 注释的 jUnit 测试中访问 Spring 上下文?

我有以下测试课

是否可以通过services-test-config.xml其中一种方法以编程方式访问?喜欢:

0 投票
14 回答
321366 浏览

eclipse - 如何在 Eclipse 中更改动态 Web 项目的上下文根?

我在 Eclipse 中开发了一个动态 Web 项目。我可以使用以下 URL 通过我的浏览器访问该应用程序:

我想将访问 URL 更改为:

为此,我从项目“属性 | Web 项目设置 | 上下文根”中更改了上下文根。但是,Web 应用程序仍然具有相同的访问 URL。我已经在Tomcat上重新部署了应用程序并重新启动了Tomcat,但是访问URL和之前一样。

我发现该文件没有server.xml附加WAR文件。在没有server.xml附加文件的情​​况下,Tomcat 是如何确定我的 Web 应用程序的上下文根/MyDynamicWebApp并允许我通过此上下文根 URL 访问应用程序的?

0 投票
2 回答
42205 浏览

xml - 如何为 Spring 测试创建 TestContext?

我有一个相对较小的 Java 库,它实现了几十个 bean(没有数据库或 GUI)。我创建了一个 Spring Bean 配置文件,其他 Java 项目使用它来将我的 bean 注入他们的东西。

我现在第一次尝试使用 Spring Test 将其中一些 bean 注入我的 junit 测试类(而不是简单地实例化它们)。

我这样做部分是为了学习 Spring Test,部分是为了强制测试使用我为其他人提供的相同 bean 配置文件。

在 Spring 文档中说我需要使用 Spring 附带的“TestContext”类创建一个应用程序上下文。我相信这应该在我通过测试类上的 @ContextConfiguration 注释引用的 spring XML 文件中完成。

但是,没有提示要在文件中放入什么!

当我从 Eclipse 中运行我的测试时,它会出错,说“无法加载应用程序上下文”......当然。

更新:

这是 test-applicationContext.xml:

我的项目目录是这样的:

只是为了好玩,我还尝试通过“mvn clean test”从 mvn 命令行构建,但出现以下错误,这可能是我真正的问题: