Java @资源为类字符串的bean返回null

Java @资源为类字符串的bean返回null,java,spring,dependency-injection,Java,Spring,Dependency Injection,我是Spring的新手,我有以下问题: 我有以下bean: 然后,在我的班级登记员中,我有以下几点 @Configurable public class RegisterPerson @Resource(name="lastName") private String lastName; 然后在我的方法displayName()中{ System.out.println(姓氏) } lastName为空 我找了一些例子,但找不到与我的问题类似的东西。如有任何意见或建议,将不胜感激

我是Spring的新手,我有以下问题: 我有以下bean:


然后,在我的班级登记员中,我有以下几点

@Configurable
public class RegisterPerson
   @Resource(name="lastName")
   private String lastName;
然后在我的方法
displayName()中{
System.out.println(姓氏)
}

lastName为空

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


谢谢

您应该使用自动连线和限定符批注

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

尝试此配置

public class Test {
    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("app-context.xml");
        String s = (String) context.getBean("lastName");
    }
} 

向类中注入字符串的最佳方法是在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>
然后使用注释将其注入控制器:

@Value("${my.prop}")
private String lastName;
这是假设您的值需要是可配置的

否则,如果您现在尝试插入字符串值,请注意,默认情况下,使用注释自动关联将不起作用。要启用自动布线,您需要使用:
@Configurable(autowire=autowire.BY_NAME)
启用它,但除非您确实需要它,否则不应使用它。注释主要与AspecJ一起使用,这不是您在这里想要实现的

因此,请使用以下内容定义您的类:

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

将解决您的问题。

它仍然表示为空。有没有其他方法可以将spring.xml中的东西声明为bean,然后在类中获取其值?我只需要将这个字符串从spring.xml传递到类RegisterPerson,如果RegisterPerson是由new语句创建的,您可能会遇到问题。有解决方法吗?看看这个,反正@Resource不执行spring注入。我看到了链接,并将@Configurable添加到类中:所以现在前4行是:
@Configurable public class RegisterPerson{@Autowired@Qualifier(“lastName”)私有字符串lastName;
但它仍然告诉我lastName为null。您解决了这个问题吗?如果是,您是如何解决的?
@Value("${my.prop}")
private String lastName;
@Autowired 
@Qualifier("lastName")
private String lastName;