java 方法任意长度参数_java – @Autowired任何带有任意数量参数的方法名称

在具有任意数量参数的方法上使用@Autowired是可以的.唯一的问题是应用程序上下文必须能够识别您要为每个参数注入的内容.

错误消息中的投诉使得这一点非常清楚:您没有在应用程序上下文中定义的唯一String bean.

您的特定示例的解决方案是为每个参数使用@Value注释:

@Autowired

set(@Value("${user.name:anonymous}") String name, @Value("${user.age:30}") int age)

这将使用在您的上下文中定义的PropertyPlaceholderConfigurer来解析这些属性,如果未定义这些属性,它将回退到提供的默认值.

如果要在上下文中注入定义为bean的对象,则只需确保每个参数只有一个匹配的bean:

@Autowired

set(SomeUniqueService myService, @Qualifier("aParticularBean") SomeBean someBean)

在上面的示例中,假设应用程序上下文中只有一个SomeUniqueService实例,但可能有几个SomeBean实例 – 但是,其中只有一个将具有bean id“aParticularBean”.

最后要注意的是,@ Aututired的这种用法最适合构造函数,因为很少需要在构造对象后将属性设置为bulk.

编辑:

在写完答案之后我注意到了你的XML配置;它完全没用.如果要使用注释,只需定义没有任何属性的bean,并确保声明< context:annotation-config />在你的上下文的某个地方:

这样,容器将检测需要注入的所有内容并相应地采取相应措施. XML< property /> element只能用于调用java bean setters(只接受一个参数).

此外,您可以使用@Component(或@Service或其他)等构造型来注释您的类,然后只使用< context:component-scan /&gt ;;这将消除在XML中声明每个单独bean的需要.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值