+-

我是 Spring的新手,但遇到以下问题:
我有以下bean:
我有以下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 - 乐贴网