gpt4 book ai didi

java - Spring 注入(inject)不适用于 FF4J Web 控制台

转载 作者:行者123 更新时间:2023-11-29 07:40:11 25 4
gpt4 key购买 nike

我正在尝试让 FF4j ( ff4j.org) 网络控制台工作。根据网站上的文档,我使用以下配置:

<servlet>
<servlet-name>ff4j-console</servlet-name>
<servlet-class>org.ff4j.web.embedded.ConsoleServlet</servlet-class>
<init-param>
<param-name>ff4jProvider</param-name>
<param-value><path to class>.ConsoleFF4jProvider</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>ff4j-console</servlet-name>
<url-pattern>/ff4j-console</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

我对 FF4JProvider 的实现是:

import org.ff4j.FF4j;
import org.ff4j.web.api.FF4JProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
* Created by itaykl on 17/06/2015.
*/
@Component
public class ConsoleFF4jProvider implements FF4JProvider{

@Autowired
private FF4j ff4j;

public ConsoleFF4jProvider() {
}

@Override
public FF4j getFF4j() {
return ff4j;
}
}

我的问题是无论我做什么我都无法获得 ff4j 的 Autowiring 上类。每当 ConsoleServlet到达 getFF4J() 的方法调用, ff4j类(class)成员是null .

我已经尝试将其他几个 servlet 与 FF4J 控制台一起使用,并尝试定义 ff4j bean 有几种方式。

目前定义为:

<bean id="ff4j" class="org.ff4j.FF4j" ></bean>

但似乎没有任何效果。

如果有人找到解决此问题的方法并可以分享,我将不胜感激。

最佳答案

正如我在评论中所说,当您尝试访问 ConsoleFF4jProvider 中的 bean 时,尚未调用 FF4j 的构造函数。这是因为 Spring 首先加载 ConsoleFF4jProvider 而不是 web.xml 中定义的 beans。要解决此问题,您可以删除:

@Autowired
private FF4j ff4j;

并修改您的 getFF4j() 函数如下:

@Override
public FF4j getFF4j() {
final AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(FF4j.class);
context.refresh();

FF4j ff4j= context.getBean(FF4j.class);
return ff4j;
}

或者您也可以在构造函数中初始化 ff4j。

编辑:否则你可以添加

SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

ConsoleFF4jProvider 的构造函数

希望这能解决您的问题。

关于java - Spring 注入(inject)不适用于 FF4J Web 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com