我试图了解我的设计的缺点,下面是我的代码
class Utils {
public static SpringBean bean;
public static void setBean(SpringBean b){
bean = b;
}
public static SpringBean getBean(){
return bean;
}
public static Object getSomethingFromBean(){
return bean.getSomethingFromBean();
}
}
下面是我的bean上下文xml
<bean id="utils" class="utils">
<property name="bean" ref="springBean"></property>
</bean>
<bean id="springBean" class="SpringBean">
</bean>
我这样做,所以我可以直接调用utils类的方法,如
Utils.getSomethingFromBean();
答案 0 :(得分:4)
Spring的观点是(简化这里)以避免通过静态方法或单例访问服务。使用Spring的所有原因都适用于为什么不使用这种方法。
此外,必须实例化一个仅限静态字段的类是一个很好的暗示,你做的事情至少是不寻常的。
最后,如上所述,Utils
静态的内容是没有意义的 - 如果utils.getSomethingFromBean();
是一个没有静态的普通bean,那么你也可以做Utils
领域。如果你打算调用Utils.getSomethingFromBean();
,你应该让调用者可以使用utils
Spring bean,而不是使用静态方法。