看下这个spring注入如何配置

绝望的奶黄包 2017-01-10 09:39:54

<bean id="router" class="me.chanjar.weixin.mp.api.WxMpMessageRouter">
<constructor-arg index="0" type="me.chanjar.weixin.mp.api.WxMpService" value="com.fish.wechat.config.MainConfig.wxMpService"/>
</bean>

<bean id="coreService" class="com.fish.wechat.impls.CoreServiceImpl">
<property name="router" ref="router"/>
</bean>


me.chanjar.weixin.mp.api.WxMpMessageRouter
只有一个有参构造函数,参数值是一个静态对象,路径是
com.fish.wechat.config.MainConfig.wxMpService//这真的是个静态对象,不是借口



错误信息
Unsatisfied dependency expressed through constructor argument with index 0 of type [me.chanjar.weixin.mp.api.WxMpService]: Could not convert constructor argument value of type [java.lang.String] to required type [me.chanjar.weixin.mp.api.WxMpService]: Failed to convert value of type 'java.lang.String' to required type 'me.chanjar.weixin.mp.api.WxMpService'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [me.chanjar.weixin.mp.api.WxMpService]: no matching editors or conversion strategy found
错误也很明显,value=""被当成字字符串了,那么正确的写法是?
...全文
324 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
绝望的奶黄包 2017-01-11
  • 打赏
  • 举报
回复
引用 9 楼 wjm1993 的回复:
@Configuration public class Demo{ @Bean public wxMpService wxMpService() { wxMpService w = new wxMpService() 取你的静态对象为w赋值 return w; } } 你的spring容器就存在id为wxMpService的值了。ref="wxMpService"即可直接引用
解决了,谢谢。
绝望的奶黄包 2017-01-11
  • 打赏
  • 举报
回复
引用 10 楼 zwy0123 的回复:
把me.chanjar.weixin.mp.api.WxMpMessageRouter这个类的构造方法贴出来看一下,应该是这里的转换错误了
传入的是对象,我的对象在value里被当做字符串了
ichavin 2017-01-11
  • 打赏
  • 举报
回复
把me.chanjar.weixin.mp.api.WxMpMessageRouter这个类的构造方法贴出来看一下,应该是这里的转换错误了
颐牟权月 2017-01-11
  • 打赏
  • 举报
回复
@Configuration public class Demo{ @Bean public wxMpService wxMpService() { wxMpService w = new wxMpService() 取你的静态对象为w赋值 return w; } } 你的spring容器就存在id为wxMpService的值了。ref="wxMpService"即可直接引用
绝望的奶黄包 2017-01-10
  • 打赏
  • 举报
回复
引用 7 楼 qnmdcsdn 的回复:

<bean id="wxMpService" class="com.fish.wechat.config.MainConfig.wxMpService"/>

<bean id="router" class="me.chanjar.weixin.mp.api.WxMpMessageRouter">
        <constructor-arg ref="wxMpService"/>
</bean>
是要把上边的注入到下边的吗?这样试试
<bean id="wxMpService" class="com.fish.wechat.config.MainConfig.wxMpService"/>
<constructor-arg name="" value="想用它的一个静态对象"/>
  • 打赏
  • 举报
回复

<bean id="wxMpService" class="com.fish.wechat.config.MainConfig.wxMpService"/>

<bean id="router" class="me.chanjar.weixin.mp.api.WxMpMessageRouter">
        <constructor-arg ref="wxMpService"/>
</bean>
是要把上边的注入到下边的吗?这样试试
绝望的奶黄包 2017-01-10
  • 打赏
  • 举报
回复
引用 5 楼 qnmdcsdn 的回复:
[quote=引用 4 楼 jam_show 的回复:] [quote=引用 1 楼 qnmdcsdn 的回复:] 类注册成bean,然后用ref试试
可是我的值在一个对象里。[/quote] 什么意思,com.fish.wechat.config.MainConfig.wxMpService这个玩意不能注册成一个bean吗? 对象都是什么样的,贴出来瞅瞅[/quote]
引用 5 楼 qnmdcsdn 的回复:
[quote=引用 4 楼 jam_show 的回复:] [quote=引用 1 楼 qnmdcsdn 的回复:] 类注册成bean,然后用ref试试
可是我的值在一个对象里。[/quote] 什么意思,com.fish.wechat.config.MainConfig.wxMpService这个玩意不能注册成一个bean吗? 对象都是什么样的,贴出来瞅瞅[/quote]

public class WxMpService {

  private static final JsonParser JSON_PARSER = new JsonParser();

  protected final Logger log = LoggerFactory.getLogger(this.getClass());

  private WxMpConfigStorage configStorage;
}

注册成bean的话怎么赋值呢。
  • 打赏
  • 举报
回复
引用 4 楼 jam_show 的回复:
[quote=引用 1 楼 qnmdcsdn 的回复:] 类注册成bean,然后用ref试试
可是我的值在一个对象里。[/quote] 什么意思,com.fish.wechat.config.MainConfig.wxMpService这个玩意不能注册成一个bean吗? 对象都是什么样的,贴出来瞅瞅
绝望的奶黄包 2017-01-10
  • 打赏
  • 举报
回复
引用 1 楼 qnmdcsdn 的回复:
类注册成bean,然后用ref试试
可是我的值在一个对象里。
绝望的奶黄包 2017-01-10
  • 打赏
  • 举报
回复
引用 2 楼 life_wander 的回复:
都啥年代了,还用配置方式注入,Spring开发的注解你倒是用呀,我的哥。
那你到底会不会啊。。
life_wander 2017-01-10
  • 打赏
  • 举报
回复
都啥年代了,还用配置方式注入,Spring开发的注解你倒是用呀,我的哥。
  • 打赏
  • 举报
回复
类注册成bean,然后用ref试试

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧