Java Spring Di通过setter动态构造函数参数
我是spring框架的初学者,下面是通过setter应用DI的教程。所有这些都可以正常工作,但我想在类中添加一个构造函数CsvOutputGenerator,该构造函数带有一个动态参数,在我从应用程序上下文获取bean时动态传递 我该怎么做 我已经用这种方式更改了spring配置:Java Spring Di通过setter动态构造函数参数,java,spring,dependency-injection,Java,Spring,Dependency Injection,我是spring框架的初学者,下面是通过setter应用DI的教程。所有这些都可以正常工作,但我想在类中添加一个构造函数CsvOutputGenerator,该构造函数带有一个动态参数,在我从应用程序上下文获取bean时动态传递 我该怎么做 我已经用这种方式更改了spring配置: ... <bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator"> <construct
...
<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator">
<constructor-arg type="java.lang.String" value="Test"/>
</bean>
...
。。。
...
但在这种情况下,我的构造函数是静态值。例如,您可以通过系统属性传递它
<constructor-arg lazy-init="true" type="java.lang.String" value="#{ systemProperties['some.key']}"/>
例如,您可以通过系统属性传递它
<constructor-arg lazy-init="true" type="java.lang.String" value="#{ systemProperties['some.key']}"/>
尝试其他方法,即使Spring不是这样使用的(请注意“原型”范围):
是我在上面使用的API中的方法。尝试其他方法,即使Spring不是这样使用的(请注意“原型”范围):
是我在上面使用的API中的方法。以下内容基于上述问题和评论。 假设你有一个带有属性字符串url的类URLEPO。url已初始化为值。 然后你可以这样做,连接你的CsvOutputGenerator
public class URLRepo {
private String url = "your value";
getters and setters
}
<bean id="urlRepo" class="com.*.*.MyURLRepo"/>
<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator">
<constructor-arg type="java.lang.String" value="urlRepo.url"/>
</bean>
公共类urrepo{
私有字符串url=“您的值”;
接球手和接球手
}
希望这就是您想要的。以下内容基于上述问题和评论。 假设你有一个带有属性字符串url的类URLEPO。url已初始化为值。 然后你可以这样做,连接你的CsvOutputGenerator
public class URLRepo {
private String url = "your value";
getters and setters
}
<bean id="urlRepo" class="com.*.*.MyURLRepo"/>
<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator">
<constructor-arg type="java.lang.String" value="urlRepo.url"/>
</bean>
公共类urrepo{
私有字符串url=“您的值”;
接球手和接球手
}
希望这就是您要查找的内容。您是指其他配置文件吗?当我从ApplicationContext获取bean时,我想从我的源代码中传递它。默认情况下,它在初始化应用程序上下文时设置属性,您需要惰性初始化,在初始化之前,您需要设置系统属性以传递它。您制作了一个惰性初始化示例?在回答中更新,然而,这似乎是一个好主意,只是为了学习的目的,如果它是真正的应用程序,那么最好不要继续依赖于这样的初始化,并在初始化属性后通过代码手动设置属性谢谢你的建议,但是有一些类,比如文件类,在它们的构造函数中执行一些操作,例如:newmyclassfile(“mypath”)。如何解决这种情况?是指从另一个配置文件?当我从ApplicationContext获取bean时,我想从我的源代码中传递它。默认情况下,它在初始化应用程序上下文时设置属性,您需要惰性初始化,在初始化之前,您需要设置系统属性以传递它。您制作了一个惰性初始化示例?在回答中更新,然而,这似乎是一个好主意,只是为了学习的目的,如果它是真正的应用程序,那么最好不要继续依赖于这样的初始化,并在初始化属性后通过代码手动设置属性谢谢你的建议,但是有一些类,比如文件类,在它们的构造函数中执行一些操作,例如:newmyclassfile(“mypath”)。如何解决这种情况?我按照您的指示进行了操作,但得到了以下错误消息:“无法解决方法‘getBean(java.lang.String,java.lang.String)’”,我建议使用较新的Spring版本。Spring现在的最新版本是4.0.5,而您正在测试的教程使用的是2.5.6。这个版本已经发布了将近6年了。我遵循了您的指示,但是我得到了这个错误消息:“无法解析方法‘getBean(java.lang.String,java.lang.String)’”我建议使用一个更新的Spring版本。Spring现在的最新版本是4.0.5,而您正在测试的教程使用的是2.5.6。这个版本已经发布近6年了。