java – Spring Bean和带有params的@Autowired构造函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Bean和带有params的@Autowired构造函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1909字,纯文字阅读大概需要3分钟。
内容图文
我想了解是否可以使用以及如何使用@Autowired Constructor和params进行Bean操作.
@Component
public class Routes
{
private Foo req;
@Autowired
public Routes(Foo req)
{
this.req = req;
}
public String getUrl(String destin)
{
return req.getContextPath() + destin;
}
}
@Component
public class HomeController
{
@Autowired
private Routes routes;
public HomeController(Foo req)
{
String foo = routes.getUrl("something");
}
}
真正的代码——编辑—————
例外情况发生在线上:
String foo = rt.getUrl(“caca”);
public class AppRun extends HttpServlet {
private static final long serialVersionUID = -3308874705513248491L;
private ApplicationContext context;
@Override
public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
FooTest ft = new FooTest();
HomeControllerTest hc = (HomeControllerTest) context.getBean("homeControllerTest", new Object[]{ft});
}
}
@Component
@Scope("prototype")
public class FooTest {
public String mensagem()
{
System.out.println("funcionou");
return "ok";
}
}
@Component
@Scope("prototype")
public class RoutesTest {
private FooTest req;
@Autowired
public RoutesTest(FooTest req)
{
this.req = req;
}
public String getUrl(String destin)
{
return req.mensagem().concat(destin);
}
}
@Component
@Scope("prototype")
public class HomeControllerTest {
@Autowired
private RoutesTest rt;
public HomeControllerTest(FooTest req)
{
String foo = rt.getUrl("caca");
System.out.println(foo);
}
}
解决方法:
问题是您正在构造函数中访问尚未估值的属性:Spring必须先创建对象,然后才能设置@Autowired属性rt.将参数RoutesTest rt添加到构造函数,或将构造函数逻辑移动到afterPropertiesSet方法.
以下是如何使用构造函数更改失败的类:
@Component
@Scope("prototype")
public class HomeControllerTest {
private RoutesTest rt;
@Autowired
public HomeControllerTest(FooTest req, RoutesTest rt)
{
this.rt = rt;
String foo = rt.getUrl("caca");
System.out.println(foo);
}
}
内容总结
以上是互联网集市为您收集整理的java – Spring Bean和带有params的@Autowired构造函数全部内容,希望文章能够帮你解决java – Spring Bean和带有params的@Autowired构造函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。