繁体   English   中英

如何在Spring bean中传递类构造函数参数由注释自动装配

[英]How to pass class constructor parameters in Spring bean Autowired by annotations

没有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
    .
    .
    .
}

我怀疑这是你真正想要做的 我的猜测是User是某种模型对象,不应该由Spring的依赖注入处理。

依赖注入(其大大解释这里当执行请求时,容器开始或春MVC)通常创建和电线豆在一起。 因此,必须在创建AnotherClass实例之前创建User对象。

如果这是使用Spring MVC的请求的一部分,则@ModelAttribute@RequestParam@PathVariable可能是您的朋友。 有关这方面的一些很好的文档,请查看Spring文档

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中,不允许使用两个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM