我想使用少量属性创建一个对象,如何使用Spring @Autowired实现这一目标? 例如 -
public class Person{
private String fname;
private String lname;
public Person(String fname, String lname){
this.fname = fname;
this.lname = lname;
}
}
如何通过在运行时传递这些属性来使用@Autowired Person类创建对象。
阿图尔
答案 0 :(得分:3)
你真的想要自动装配变量吗?或者你想在获取bean时明确地设置它们吗?
在后一种情况下,您可以简单地拨打ApplicationContext.getBean(Class<T> clz, Object ... arguments)
,在您的情况下......
Person person = context.getBean(Person.class, "Henry", "Miller");
显然,这与@Autowired
没有任何关系。或者您想要将一些字符串自动装入其中?在这种情况下,您通常会使用@Value
注释。自动装配用于注入 bean ,您可以通过现场注入...
@Autowired
private MyService service;
...通过构造函数注入...
@Autowired
public Person(MyService service) { ... }
...通过二传手注射...
@Autowired
public void setMyService(MyService service) {..}
但通常你只会以这种方式自动装配 bean 。字符串不是bean,因此您必须使用@Value
...
@Autowired
public Person(@Value('${app.some.property}') final String firstName) {...}
这会将 app.some.property 的已配置属性注入该bean。当然,如果你真的想从应用程序上下文中注入一些东西,这只是好的。如果要动态创建Person,可以使用上面的方法。