问题标签 [spring-ioc]

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 投票
1 回答
913 浏览

spring - 测试后 SpringJUnit4ClassRunner 是否仍然不能可靠地调用 DisposableBean.destroy

根据:https: //jira.spring.io/browse/SPR-4103 SpringJUnit4ClassRunner 在测试后不会总是调用 DisposableBean.destroy (*facepalm*!) - 由于 JUnit 的实现问题。

这仍然是真的吗?

我在 scala 中创建测试,如下所示:

而且我发现执行 Service2Test 时,Service1Config 中 bean 的 destroy 方法没有被销毁。

我发现很多文章都建议添加 @After 来明确关闭上下文。这听起来像是一个等待发生的错误(因为如果您忘记在一个测试中添加 @After 清理,下一个测试类将失败,您将不知道为什么)。

如果使用 SpringJUnit4ClassRunner/JUnit 仍然无法做到这一点,是否有一个测试框架会在每次测试后自动调用上下文清理?

0 投票
1 回答
857 浏览

java - 春天,LocalDate,java8,arrayindexoutofboundsException

LocalDate使用应用程序上下文在 Springbean 中实例化正在抛出一个ArrayIndexOutofBoundsException

0 投票
2 回答
8268 浏览

java - 如何在 Spring 中检查请求范围的可用性?

我正在尝试设置一些代码,如果 spring 的请求范围可用,则以一种方式运行,如果所述范围不可用,则以另一种方式运行。

有问题的应用程序是一个 Web 应用程序,但有一些 JMX 触发器和计划任务(即 Quartz)也会触发调用。

例如

假设myRequestScopedBean是请求范围。

我知道这可以通过try-catch围绕调用来完成myRequestScopedBean,例如:

但这似乎真的很笨重,所以我想知道是否有人知道一种优雅的 Spring 方式来询问某些东西以查看请求范围的 bean 是否可用。

非常感谢!

0 投票
4 回答
993 浏览

spring - Spring Singleton范围的确切含义是什么?

我在 applicationContext.xml 中为同一个类定义了两个具有不同 id 名称的 bean。它工作得很好,所以我混淆了确切的弹簧单例范围的含义。我的代码如下。我在stackoverflow中遇到了一些其他类似的问题。但我不清楚,因为那些不完全相同的上下文和很长的解释。

如果你知道它是什么请分享我

我读到了
1. 容器(上下文)的单个实例,
-- 就我而言,它是否为我的两个实例创建了两个容器?

0 投票
3 回答
585 浏览

spring - 将基于注解的 Bean 注入基于 xml 的 bean

我的持久性配置类如下所示:

我有一个 xml 配置类:

所以我想注入用@Bean(在持久性配置类中)注释的名为“ dataSource ”的bean ,我该怎么做?<jdbc-user-service data-source-ref="dataSource" ... >

0 投票
1 回答
1353 浏览

java - Spring:XML 配置位置

我是spring的学习者,已经使用spring IOC容器构建了我的测试项目,并在我的项目根路径中配置了beans.xml并加载到我的应用程序中并从中获取bean。

项目根目录下的spring.xml

源文件中的 spring.xml

这是加载 beans.xml 文件的另一个代码

我的问题是,在实际项目中创建 xml 文件名和文件位置是否有任何标准或约定。因为在一些阅读文章中,我还发现大型项目可能有多个 xml 文件,如 service.xml 和 dao.xml .

0 投票
2 回答
809 浏览

spring - Spring - 无法在请求范围内实例化组件对象

我正在尝试实例化一个组件对象,我<bean>在 applicationContext.xml 中为其声明了条目。实例化我的目标组件类的流程如下

计算控制器 -> 计算服务 -> 计算组件

在哪里

CalculatorController - 范围 = 请求,使用 @Controller 注释并包含在 webapplicationContext.xml 中的组件扫描中

CalculatorService - Scope = 单例,使用 @service 注释并包含在 applicationContext.xml 中的组件扫描中

CalculateComponent - 范围 = 请求,无注释,从 webapplicationConext.xml 和 applicationContext.xml 中的组件扫描中排除。在 webApplicationContext.xml 中定义了 bean 条目,范围 = request。也包括 <aop:scoped-proxy/><bean>定义中。

我在 web.xml 中包含了以下条目

请注意,CalculateComponent 有一个 3 参数 ref 对象构造函数,它们三个都<bean>在 webApplicationContext.xml 中具有单例范围的条目,并且它们没有注释。

当请求发送创建CalculateComponent对象时,spring容器抛出如下错误。

“未找到线程绑定请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,那么您的代码是可能在 DispatcherServlet/DispatcherPortlet 之外运行:在这种情况下,使用 RequestContextListener 或 RequestContextFilter 来公开当前请求。”

请指教。

更新:

当我从 contextConfigLocation 中删除 /WEB-INF/mvc-dispatcher-servlet.xml 并启动服务器时,我得到了 Autowired failed 错误 - “No qualifying bean of type of CalculateComponent found for dependency:”,即使在我从请求中更改了范围之后到单身。

然后我在CalculateService 中注释掉了CalculateComponent 的自动装配,我现在可以看到CalculateComponent 启动了两次(如我的@Serge Ballesta 所述)。所以我得出的结论是,CalculateService 是通过 ContextLoaderListener(applicationContext.xml 中的 bean 条目)在加载 DispatcherServlet 之前启动的(即没有加载 mvc-dispatcher-servlet 中提到的 bean)。

我在 contextConfigLocation 中再次添加了 /WEB-INF/mvc-dispatcher-servlet.xml,但这次是作为第一个条目(即在 applicationContext.xml 之上)。现在,CalculateComponent 再次加载了两次,并且自动装配是在单例范围内完成的。通过此设置,我将CalculateComponent 范围更改回request,但再次出现“我得到No thread-bound request found”错误。

所以问题是,

ContextLoaderListener 试图在 DispatcherServlet(CalculateComponent) 加载/可用之前对其资源进行初始化。

0 投票
1 回答
1604 浏览

spring - 具有缓存和泛型类型自动装配的 Spring 4

我正在使用最新版本的 Spring,当我尝试两次注入相同的泛型类型并且泛型类型的实现使用缓存时,我遇到了启动错误。

下面是我可以创建的最简单的示例来复制错误。

这编译得很好,但是当我运行应用程序时,我收到以下错误:

No qualifying bean of type [demo.GenericService] is defined: expected single matching bean but found 2: integerService,stringService

我还没有尝试过使用限定符,但我猜这将是一种解决方法。我会在发布后尝试一下。理想情况下,我希望自动装配泛型和缓存以集成开箱即用。我做错了什么,或者我能做些什么来让它工作吗?

谢谢!

0 投票
0 回答
917 浏览

java - 如何为 Java 邮件会话配置延迟加载 JndiObjectFactoryBean

我有一个要求,我的 Spring JndiObjectFactoryBean 必须对我的码头服务器中配置的 Java 邮件会话进行延迟查找

以下是我的 jetty.xml 中的邮件会话声明

在我的 Spring bean 定义文件中,我有以下 bean 定义

我不希望 Spring 在启动时查找邮件/GmailMailSession。所以我将“lookupOnStartup”属性设置为“假”。如果我将“lookupOnStartup”设置为 false,Spring 希望我提供一个 proxyInterface。我搜索了很多,但找不到邮件会话的界面。我尝试设置“javax.mail.Session”这是一个类。我得到了以下异常,这是显而易见的

我的问题是是否有任何可用于 Java 邮件会话的接口,我可以将其设置为“proxyInterface”并让惰性查找工作?

0 投票
1 回答
2770 浏览

java - 抽象父类和子类的Spring配置问题

我正在尝试使以下代码正常工作。基本上我在 mysql 数据库中有一个名为 alert_settings 的表。下面是我如何配置它和类。

下面是我的抽象通用 DAO、警报设置 DAO 接口和实际 DAO 类。

  • 抽象通用 DAO

    }

  • AlertSettingDAO 接口

    /li>
  • 和 3. AlertSettingDAO 实现类

@Repository 公共类 AlertSettingDAOImplSpring 扩展 GenericDAO 实现 AlertSettingDAO {

}

这是我的主要课程

我哪里错了?如何以正确的方式做到这一点?