没有IOC容器的正常方法是:
new User("Names", 22);
此处的参数值是动态的,例如,它们是通过用户提交表单提取的,因此无法存储在文件中。
TextField userNames = new TextField();
names = userNames.getText()
其他参数相同。
其中:
@Component
public class User {
public User(String names, int age) {
.
.
.
}
}
如何在将用户User
传递到另一个类的构造函数的参数时初始化Autowired
:
@Component
public class AnotherClass {
@Autowired
User user(....)????? // How do I do it here
.
.
.
}
答案 0 :(得分:4)
我怀疑这是你真正想做的事情。我的猜测是User
是某种模型对象,不应该被Spring的依赖注入处理。
依赖注入(非常详细解释here)通常在启动容器时创建并连接bean,或者在执行请求时创建Spring MVC。因此,必须在创建User
实例之前创建AnotherClass
对象。
如果这是使用Spring MVC的请求的一部分,则@ModelAttribute
以及@RequestParam
和@PathVariable
可能是您的朋友。有关这方面的一些很好的文档,请查看Spring docs
答案 1 :(得分:2)
public User( @Value("Ganesh") String names,
@Value("27") int age) {
names=names;
this.age=age;
}
除了@value之外,在XML中使用索引还具有灵活性,如果index = 0,比如使用两次,则后面的值用于覆盖旧值。 类似地,可以在重载和参数化构造函数的情况下指定类型,并且IOC自己选择适当的构造函数。如果未提供type或index,则会考虑构造函数args的默认顺序,如果参数化的cons不匹配,则会发生异常。 假设使用了setter并且在bean标记内部,为同一个名称提供了两个属性标记,在这种情况下,抛出异常而不是覆盖该值。在setter中,不允许使用两个参数。