我正在将我的应用程序从spring 3.x升级到4.3。我正在删除xml配置并使用它的注释。我得到以下异常:哪个注释将列表值注入列表属性?
Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanInitializationException: Properties 'authorities' and 'username' are required for bean 'getJobUsingQuartz'
什么是下面的XML代码注释:
<bean id="mcn"
class="quartzJobs.jobs.MyClassName">
<property name="username" value="CronUser"/>
<property name="authorities">
<list>
<value>ROLE_SYSTEM</value>
</list>
</property>
</bean>
我想用注释注入上述价值的财产。我试图像以下:
MyClassName.java
@Configuration
@ComponentScan(basePackages = "quartzJobs.jobs")
public class MyClassName{
@Autowired
@Value("CronUser")
private String username;
@Autowired
@Value(value = "{ROLE_SYSTEM}")
private List<String> authorities;
@Required
public
void setUsername(final String aUsername)
{
username = aUsername;
}
@Required
public
void setAuthorities(final List<String> aAuthorities)
{
authorities = aAuthorities;
}
}
我做错了什么?请帮帮我。
如果我没记错,你不能注入使用集合了'@ Value'注解。但你可以在任何地方创建一个列表,并使用@ Component注解将它变成一个bean:@Component(“authorities”)private List authorities = new ArrayList(){{add(“ROLE_SYSTEM”);}};/*不好的风格* /'然后你可以从内存中注入它,我认为是这样的:'@Resource(name =“authorities”)private列表权限;'同时检查Spring表达式语言(SpEL);它可能会提供一些帮助你的东西。 :) –
Christian
@Christian,谢谢你的回应。我尝试了你的建议,但没有运气。仍然有相同的例外 –