Spring框架中如何注入java.util.Calendar.getInstance实例?
你当前的配置错误原因是:class属性需填写类的全限定名,而getInstance()是Calendar的静态工厂方法,不能直接写在class属性中,且Calendar本身是抽象类,无法直接通过new实例化,需要用静态工厂方法的方式配置。
方案1:XML配置方式
指定factory-method属性声明静态工厂方法即可,正确配置如下:
<bean id="calendar" class="java.util.Calendar" factory-method="getInstance" />
需要注入到其他Bean时,直接通过ref引用即可:
<bean id="yourService" class="com.example.YourService"> <property name="calendar" ref="calendar" /> </bean>
如果需要基于这个Calendar实例获取Date类型对象,也可以扩展配置:
<bean id="currentDate" factory-bean="calendar" factory-method="getTime" />
方案2:JavaConfig配置方式(注解场景常用)
直接在配置类中定义Bean:
@Configuration public class SpringConfig { @Bean public Calendar calendar() { return Calendar.getInstance(); } }
注入时直接加@Autowired注解即可:
@Service public class YourService { @Autowired private Calendar calendar; }
内容的提问来源于stack exchange,提问作者LEARNER OLY ASKING
相关产品推荐
相关产品推荐

