问题标签 [spring-bean]

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 回答
839 浏览

spring - BeanPostProcessor 未在 MVC 上下文中调用

我有一个带有上下文层次结构的 Web 应用程序

a)扫描排除控制器的应用程序上下文:

b) 包含控制器的 mvc 上下文:

我“写”了这个 beanPostProcessor(自动设置记录器)

问题是我猜这个处理器没有被 @Controller 类调用,因为它只在自己的上下文中处理 bean。

我怎样才能让它处理 mvc 上下文中的 bean(即@Controller)?

谢谢 !

0 投票
1 回答
9753 浏览

java - 为什么显示元素类型“bean”必须后跟属性规范,“>”或“/ >”.at

1. 这就是我得到元素类型“bean”必须后跟属性规范“>”或“/>”的点。

2. 这是另一个注入id和员工依赖的依赖bean类。

0 投票
1 回答
306 浏览

java - @Named 注释无法在 Servlet 中加载 bean - javax.naming.NameNotFoundException: Name student is not bound in this Context

我最初将 @Component 用于在 Servlet 中调用的 bean(Student.java)。我将@Component 更改为@Named。我曾经使用以下代码在 Servlet 中获取学生 bean。

在我更改为 @Named 后,不再检测到该 bean。我收到以下错误消息。谁能告诉我有什么问题?我将 javax.inject-1.jar 文件放在 webapps\student-enrollment\WEB-INF\lib\ 下

编辑 1

这是我的 Student.java 和 StudentEnrollmentServlet 类的一部分。

0 投票
1 回答
1098 浏览

java - 构造函数参数重载的弹簧注入问题

我想问一下Spring Constructor Injection。所以在课堂上,我有两个参数数量不同的构造函数。

如果我尝试像这样注入来访问第一个构造函数,Spring 将无法工作,因为存在歧义。

调试代码是这样的:

我认为这意味着,Spring 需要知道 index 1 参数是否存在?

这与我们有两个具有相同数量参数的构造函数的通常情况不同。像这样,我可以设置类型以便在注入时进行区分。

就我而言,是否有强制 Spring 选择第一个构造函数?

非常感谢!!

0 投票
2 回答
4055 浏览

performance - Grails - 在普通 Groovy 类中访问 Bean 的最佳方式

我正在尝试将现有 bean 注入 Groovy 类,并且我知道 Grails bean 注入不适用于普通的 Groovy 类(在 src/groovy 文件夹中)。我可以通过

但是,我想知道这是否是最好的方法(从执行速度和内存使用的角度来看)。我将从在应用程序的正常使用期间调用数百次的方法中调用 bean,我想知道是否有更好的方法。至少,我是否应该存储 bean 引用(可能在构造函数中),这样我就不会一遍又一遍地调用上面的代码?我可以存储对 bean 的静态引用,以便每个类都不必存储自己的吗?还有其他建议或改进吗?

0 投票
1 回答
1138 浏览

java - 调用 Spring 上下文的 Java 模块抛出 BeanFactory 未初始化或已关闭 - 在访问 bean 之前调用“刷新”

尽管我看到很多问题,但有些答案与我的设置无关。我一共有 3 个模块 API,Impl 和 consumer。Consumer 依赖于 API 和 Impl。消费者有 web.xml,看起来像

在消费者资源 conf/spring-config.xml 中存在配置

在 repository.xml 我有

我在这里错过了什么吗?

整个堆栈跟踪如下

0 投票
1 回答
2108 浏览

java - 在 HandlerIntercaptor 中访问请求范围的 bean

一般来说,我对 Spring 和 Web 开发非常陌生,所以如果问题看起来很困惑或不完整,请多多包涵……

我目前正在开发一个 Spring 项目,其中有一个我称之为“requestContext”的 bean,它包含一些常用数据。这个 bean 是请求范围的,它似乎是由一个 serverlet 过滤器(GenericFilterBean 的一个子级)填充的。

我试图在 HandlerInterceptor 的 preHandle 方法中从另一个 bean(我将调用 UserBean)访问这个 bean 持有的信息。在 UserBean 中,我使用 @AutoWired 访问 bean,如下所示:

然后在其中一种 UserBeans 方法中,我尝试访问必要的数据。问题是请求上下文包含所有空值。我认为可能存在一些生命周期问题,对过滤器不熟悉,但是使用一些断点我可以看到过滤器在 handlerInterceptor 之前执行,并且我可以看到正在设置的请求上下文数据。在这种情况下,我希望至少能够在拦截器的 preHandle 方法中访问它,如果不是其他方法的话。

应用程序的其余部分(包括过滤器、处理程序拦截器)都是现有/已知的工作代码,所以我认为在尝试使用该 bean 之前我没有任何设置问题。我的期望或我尝试访问它的方式都存在一些问题。

更新:我发现了一个实际使用 requestContext 的类的示例。这是另一个过滤器(但直接实现过滤器而不是扩展 GenericFilterBean)。这个过滤器调用

SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)

在它的 init() 方法中。我注意到,如果我在尝试访问 requestContext 之前进行此调用,那么它将使用我期望的值进行实例化(还请注意,如果我在默认构造函数中执行此操作,它将不起作用)。有些东西告诉我这不是我的情况的权利解决方案,但希望这能对这个问题有所了解。

尝试阅读 SpringBeanAutowiringSupport 以更好地理解。我如果我理解正确,这表明我的 bean 当前无法访问 WebApplicationContext,因此在进行此调用之前自动装配默认不工作(一旦进行调用,后续请求似乎不会要求)。这是否表明我配置 bean 的方式存在一些问题(它没有在 IoC 中正确注册?)再次,请原谅我对 spring 缺乏了解,我仍然不太了解 IoC 之类的东西......

0 投票
0 回答
824 浏览

spring - 多模块bean注入失败

我有 2 个 Maven 模块,API 和 Impl。Impl 基于 DI 并具有以下代码

注意:使用 annotation-config 作为我的 repositoryImpl 类有 @Repository 注释

我有第三个示例 maven 模块,它基于 spring-jersey 并具有 API 和 Impl 依赖项。Spring-Jersey webapp 运行良好,经示例类测试。这是用于访问我的服务的类修改类

但是当我使用项目模块进行测试时,自动装配失败并看到异常

问题是 Impl 模块正在使用 spring 进行 bean 实例化,但消费或 API 模块,即 spring-jersey webapp 或 API 不知道存在另一个上下文。那么我怎样才能让他们了解上下文并相互交互。

0 投票
2 回答
1574 浏览

java - 在抽象类中自动装配不同的bean

我有以下问题:

假设我有一个抽象类让我们说:

SomeInterface然后是-> A_Interface,等的几个实现。如果我对每个实现都B_Interface使用相同的,这没关系。SessionFactory

问题是我想对SessionFactory不同的一组实现使用 distinct 并且我不想用@Qualifier. 由于我需要更改代码,因此定义这些组的灵活性会降低。也可以通过将 放在SessionFactory抽象类中,如果无法用@Qualifier注释指定。

有没有办法在 xml bean 定义中做到这一点?我尝试声明两个SessionFactorybean,然后为每个 ref 相应的类,但这仍然会返回NoUniqueBeanDefinitionException.

0 投票
1 回答
408 浏览

spring - Spring bean GeoModule bean 注入到 RepositoryRestMvcConfiguration

我目前正在测试 spring data rest,我想通过 REST 接口公开我的实体的主键(id)。

我发现正确的(?)方法是:

问题是,如果我将 bean 定义更改为:

由此:

我的应用程序无法启动...

错误是:

基本上它说它没有找到 GeoModule bean,所以它不能为 RepositoryRestMvcConfiguration 基础自动装配它......

现在有趣的是,我定义了 bean:

错误变为:

所以如果我不定义一个bean,有0,但如果我定义一个,有2?