我是Spring的新手,在通过各种来源(Book& Internet)浏览DI主题时,我看到了以下定义bean配置的模式:
例如,我们有一个" SampleApp"
public class SampleApp
{
private int intValue;
private float floatValue;
public SampleApp(int value)
{
intValue = value;
}
public void setIntValue(int value)
{
intValue = value;
}
public void setFloatValue(float floatValue)
{
this.floatValue = floatValue;
}
}
对应的bean配置如下:
<bean class="somepackage.SampleApp" id="samplebeanapp">
<constructor-arg value="15" />
<property value="0.5" name="floatValue"></property>
</bean>
我们一直在将这里的值硬编码为15&amp; 0.5。 以下是我的问题:
答案 0 :(得分:3)
Spring配置文件在启动时处理,Spring单例bean也在那时被实例化。在正常情况下,它们在应用程序生命周期内不会再次处理。
您可以使用此类属性注入来传递配置值,同时可以使用对象引用的注入来确定应用程序的结构。
要避免对XML文件中的值进行硬编码,可以使用PropertyPlaceholderConfigurer
在属性文件中提取它们。
原则是尽可能地对接口进行编程,因此您不必将自己绑定到任何特定的实现。但是,对于您正在考虑的情况,您只需在运行时传递值。
示例:BeanA需要DaoBean的服务,但DaoBean不会被BeanA实例化。它将通过依赖注入传递给BeanA,而BeanA只会与DaoInterface进行通信。
此时如果BeanA想要保存15和0.5,将使用实际值(或更常见的变量)调用方法。
daoInterface.saveInt(15);
daoInterface.saveFloat(0.5);
在这种情况下,我没有使用依赖注入来传递值。依赖注入是一个很好的工具,但并不意味着必须在任何地方使用它。