+-
java-@Resource为String类的bean返回null
我是 Spring的新手,但遇到以下问题:
我有以下bean:

< bean id =“ lastName” class =“ java.lang.String”>
  < constructor-arg value =“ Johnson” />
< / bean>

然后,在我的类RegisterPerson中,我有以下内容

@Configurable
public class RegisterPerson
   @Resource(name="lastName")
   private String lastName;

然后在我的方法中displayName(){
       System.out.println(姓)
    }

lastName为null.

我查找了一些示例,但找不到与我的问题类似的东西.任何意见或建议,将不胜感激.

谢谢!

最佳答案
将String注入类的最好方法是在Spring XML中声明属性配置器:

<bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="locations">
        <list>
            <value>classpath:/cfg/yourPropsFile.properties</value>
        </list>
    </property>
</bean>

如果您使用注释,请确保您的spring文件中包含以下行:

<context:annotation-config/>
<context:component-scan base-package="com.your.app"/>

然后只需将要在Spring bean中注入的字符串添加到该文件中即可,例如:

my.prop=Johnson

然后使用@Value注释将其注入您的控制器中:

@Value("${my.prop}")
private String lastName;

这是假设您的值需要可配置.

否则,如果您现在需要尝试注入String值,请注意,默认情况下,使用@Configurable注释自动装配将不起作用.要启用自动布线,您需要使用以下命令启用它:@Configurable(autowire = Autowire.BY_NAME),但除非真正需要,否则不应使用它. @Configurable注释主要与AspecJ一起使用,这不是您要在此处实现的.

因此,使用@Component定义您的课程并使用:

@Autowired 
@Qualifier("lastName")
private String lastName;

将解决您的问题.

点击查看更多相关文章

转载注明原文:java-@Resource为String类的bean返回null - 乐贴网