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

Spring@Autowired(必需=真)为空[重复]

毕富
2023-03-14

我有一个带有JSF2 end Spring4.3的webmodule。在backing bean中,我使用@autowired对jar的服务进行DI。在EAR模块中有WAR、带有@serviceSpring的JAR和带有Spring配置文件的JAR。

下面是web.xml片段:

    <context-param>
        <param-name>locatorFactorySelector</param-name>
        <param-value>classpath:beanRefContext.xml</param-value>
    </context-param>

    <context-param>
        <param-name>parentContextKey</param-name>
        <param-value>sharedContext</param-value>
    </context-param>
    <context-param>
    <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

applicationcontext.xml:

    <context:annotation-config />
    <context:spring-configured />
<!-- package of @Service class in jar module in EAR-- >
    <context:component-scan base-package="com.ipdb.service" /> 
<bean id="sharedContext" class="org.springframework.context.support.ClassPathXmlApplicationContext">    <constructor-arg>
    <list>
        <value>spring-ctx.xml</value>
    </list>
</constructor-arg>    </bean>

当我在Backing Bean中使用@autowired(required=null)时,值为null(没有任何异常)。我的JSF bean

@Component
@ManagedBean
@ViewScoped
public class PortfolioController {


    @Autowired(required = true)
    private PortfolioService portfolioService;

...

你能帮帮我吗,拜托。

共有1个答案

曹和正
2023-03-14

PortfolioController被认为是JSF上下文bean添加@Component@ManagedBean是完全错误的,您不能在两个不同的上下文(JSFSpring)中将同一个类标记为bean。

有两种解决方案,要么使PortfolioController成为spring bean,从而删除@ManagedBean@viewscoped,要么通过JSF注入注释@ManagedProperty注入PortfolioController

@ManagedProperty("#{portfolioService}")
private PortfolioService portfolioService;
 类似资料:
  • 问题内容: 但是当应用程序尝试在客户端请求之后调用它时,自动装配的Bean为空。在applicationContext.xml中,我只有 组件扫描 设置。 -- 我究竟做错了什么? UPD: 这是我的pom.xml https://bitbucket.org/spukhov/memo- ws/src/00724e00e3aa786f62fd0e43fe0606de6ae569df/pom.xml?

  • 问题内容: 我的应用无法自动装配entityManagerFactory。 我的 applicationContext.xml : 我的 java课 : 题: 为什么entityManagerFactory为空? 问题答案: 为了让spring使用注释进行自动扭曲,您必须告诉spring。在您的xml配置中(假设您还没有element)添加一个。这将指示Spring应用程序上下文来扫描注解(如,,

  • 问题内容: 我有一个具有字段()的Spring 类(),但是该字段是我尝试使用它时所用的。日志显示该bean和该bean都在创建,但是每当我尝试在服务bean上调用该方法时,都会得到一个a 。Spring为什么不自动接线该领域? 控制器类: 服务等级: 应该自动连接的服务bean,但不是: 当我尝试时,出现以下异常: 问题答案: 本文向大家介绍为什么我的Spring @Autowired字段为空?

  • //[input type=“text”placeholder=“First Name”class=“form control”ng model=“FirstName”必填项] 下面是我的代码 elemntvalue=驱动程序。FindElement(By.XPath(//input[@placeholder='First Name']); 字符串名称required=elemntvalue。Ge

  • 正如标题所说,my@value不会传递一个值 我在application.properties中编写了以下内容:

  • 测试类: 在我的“取样玻璃”里,我自动连接了一个像这样的bean。 在我的“OtherSampleClass”中,我注释了一个方法,如下所示: