【发布时间】:2016-07-30 12:40:00
【问题描述】:
我已经使用 context-param 在 web.xml 中加载了“myspring.xml”
在“myspring.xml”中,我编写了将参数作为构造函数参数传递给的bean
<bean id="abc" class="com.Hello">
<constructor-arg ref="dataSource"/>
<constructor-arg value= “dummy data”/>
</bean>
在 Hello bean 中,我已将构造函数初始化为,
public class Hello{
public Hello(datasource,dummydata){
}
public void methodFromHelloBean(){
// use here dummydata from constructor
}
}
这里,'Hello' bean 在服务器启动时被初始化,正如我在 web.xml 中定义的那样,它工作正常。
我的问题是-
我正在处理现有的应用程序。 我想在我的另一个类中调用 methodFromHelloBean() 说 MyService 类。 如何调用 MyService 类中的方法。
我知道的一种方法是使用 applicationContext。 但在我现有的应用程序中,我没有看到任何使用应用程序上下文路径加载的 bean。
还有什么其他方法,我如何从“MyService”类初始化“Hello”bean。 初始化时是否需要将参数传递给构造函数以及如何。
提前致谢。
【问题讨论】:
-
在MyService中注入Hello bean怎么样? MyService 是否定义为 Spring bean?
-
是的,在现有的应用程序 bean 中已自动连接。但是如果我想使用 auto wire , public class MyService { @AutoWired 你好。现在在这里我如何调用 methodFromHelloBean 并传递构造函数参数?
-
你不能。构造函数参数必须在 Spring 上下文中的设计时给出。如果你必须给你的Hello bean参数,它必须通过你要调用的方法。
-
谢谢 Arthur.So 如果我想在 MyService 类中调用 methodFromHelloBean ,我该如何调用呢?通过将对象创建为 public class MyService{ @Autowired Hello hello; public void testMethod() { hello.methodFromHelloBean()} 会起作用吗?我很怀疑,因为 Hello 有参数化的构造函数,它接受数据源和另一个参数。并且 methodFromHelloBean 使用来自构造函数的参数。
-
让我写一个答案,这样我们就可以清楚地看到发生了什么。
标签: spring dependency-injection