弹簧使用自动连线注释出错

  • 本文关键字:注释 出错 spring
  • 更新时间 :
  • 英文 :

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">   
    <property name="securityManager" ref="securityManager"/>
    <property name="loginUrl" value="/"/>
    <property name="filterChainDefinitionMap" ref="chainFilterBuff" />
</bean> 
<bean id="chainFilterBuff"   class="org.moofie.test.security.FilterChainBean">
    <property name="filterChainDefinitions">
        <value>/test/login=anon</value>
    </property>
</bean>

以上是我的弹簧配置

private String filterChainDefinitions;
public String getFilterChainDefinitions() {
    return filterChainDefinitions;
}
public void setFilterChainDefinitions(String filterChainDefinitions) {
    this.filterChainDefinitions = filterChainDefinitions;
}

这是我的 Java 代码,它与 getter 和 setter 一起工作,但我想用这样的@autowired注释替换 getter 和 setter:

@Autowired
private String filterChainDefinitions;

它得到错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1100)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:855)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
... 34 more

那么我的代码有什么问题?或者我应该使用其他注释?

setter 和 getter 的方式是有效的,因为在配置 XML 中,您直接使用 <property name="filterChainDefinitions"></property> 调用 setter 。

@Autowired 适用于显式声明的 bean。

如果要使用 @Autowired 来设置 filterChainDefinitions,则必须首先声明它,如下所示:

<bean id="filterChainDefinitions" class="java.lang.String">
    <constructor-arg value="/test/login=anon"/>
</bean>

最新更新