看到网上有人问
引用
bean中包含一个Calendar类型的变量。
想使用spring的配置文件来注入数据。
但是怎么在xml文件中表示Calendar数据呢?
请指教。
我来写一下我的做法,用Spring 2.0实现,我首先想到的是两种注入方式,构造注入或是Settter注入,由于Calendar是抽象类,不能直接new对象,所以考虑用java.util.GregorianCalendar子类来实现,父引用装子对象。
下面看看我的实现:
先定义一个Teacher类,里面有三个属性,name,age,birthday.
Teacher.java
package com.he.spring.beans;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Teacher {
private String name;
private int age;
private Calendar birthday;
public Teacher() {
super();
// TODO Auto-generated constructor stub
}
public Teacher(String name, int age, Calendar birthday) {
super();
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Calendar getBirthday() {
return birthday;
}
public void setBirthday(Calendar birthday) {
this.birthday = birthday;
}
/**
* @return
*/
public String getDate(){
Date date = birthday.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = format.format(date);
return dateStr;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "姓名:"+name+"\t年龄:"+age+"\t生日:"+getDate();
}
}
applicationContext.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!--把属性值利用构造注入其中,注入的时间是"1989-05-01"-->
<bean id="gregorianCalendarBean" class="java.util.GregorianCalendar">
<constructor-arg index="0" value="1989"/>
<constructor-arg index="1" value="4"/>
<constructor-arg index="2" value="1"/>
</bean>
<!--利用Teacher类中的Setter方式注入-->
<bean id="teacherBean" class="com.he.spring.beans.Teacher">
<property name="name" value="张三"/>
<property name="age" value="35"/>
<property name="birthday" ref="gregorianCalendarBean"/>
</bean>
</beans>
测试例子:
package com.he.spring.demo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.he.spring.beans.Teacher;
public class TeacherDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Teacher teacher=(Teacher)context.getBean("teacherBean");
System.out.println(teacher);
}
}
当时也想到了利用Calendar的工厂方法getInstance(),再用setTime(Date date)方法Setter注入,这个方法就需要一个Date对象,考虑生成一个Date对象,但是Date对象的有参构造过时了,所以就放弃了,想用的可以参考
applicationContext.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dateBean" class="java.util.Date">
<constructor-arg index="0" value="89"/>
<constructor-arg index="1" value="4"/>
<constructor-arg index="2" value="1"/>
</bean>
<bean id="calendarBean" class="java.util.Calendar" factory-method="getInstance">
<property name="time" ref="dateBean"/>
</bean>
<bean id="teacherBean" class="com.he.spring.beans.Teacher" autowire="byType">
<property name="name" value="张三"/>
<property name="age" value="35"/>
</bean>
</beans>
第一次发帖,我也正在学习Spring,遇到了这个问题,简单的解决了一下。
分享到:
相关推荐
在Spring框架中,Bean的属性注入是其核心功能之一,使得我们可以轻松地管理对象的依赖关系,无需在代码中硬编码这些依赖。本篇将详细探讨Spring中的SpEL(Spring Expression Language)注入,这是一种强大的表达式...
在Spring框架中,注入Date类型的属性有多种方式,下面我们将详细讲解上述三种方法。 1. 利用`SimpleDateFormat`的构造方法注入: 这种方式通过创建一个`SimpleDateFormat`实例来解析日期字符串,然后将解析后的日期...
通过在XML配置文件中定义bean并指定其属性值,或者使用注解如`@Value`,可以实现基本值的注入。 2. **Spring注入集合和数组**:除了基本类型,Spring还支持注入集合类型,如List、Set、Map等,以及数组。这允许我们...
在Spring中配置Quartz,我们通常会创建一个Spring配置文件,例如`quartz-config.xml`,并在其中定义相关的Bean。以下是一个基本的配置示例: ```xml <bean id="schedulerFactoryBean" class="org.springframework....
- 在Java代码中,可以使用`ApplicationContext`接口来获取Spring容器中的Bean。以下是一个示例代码: ```java package day01; import java.util.Calendar; import org.springframework.context.ApplicationContext...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
2. **XML配置**: 在Spring的配置文件中,你可以声明Job和Trigger,然后通过SchedulerFactoryBean来创建和配置Scheduler。这种方式简化了代码,使得任务配置更加灵活。 3. **编程式API**: 除了XML配置,还可以使用...
在Spring中配置定时器,首先需要在`applicationContext.xml`配置文件中定义定时任务相关的Bean。具体步骤如下: 1. **定义`ScheduledTimerTask` Bean**:该Bean用于封装定时任务的执行逻辑,其`delay`属性表示首次...
在Spring配置文件中声明定时任务类以及相关的依赖注入。 ```xml <!-- 声明定时器任务 --> <bean id="dayDataTimerJob" class="xj.action.DayDataTimerTask"> <ref bean="jdbc1Service"/> <ref bean=...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
在Spring配置文件中,我们需要创建三个主要的bean:`quartzMsg`、`msgjobtask`和`msgdoTime`。`quartzMsg`是`QuartzJob`的实例,`msgjobtask`定义了要调用的工作类和方法,而`msgdoTime`则定义了触发任务的时间。 `...
在实际应用中,SpEL广泛用于Spring的依赖注入、AOP切面、MVC控制器以及其他需要动态计算的场景。例如,在配置文件中,我们可以使用SpEL来动态设置Bean的属性值,如`['myPropertyKey']}" />`,这样系统属性的变化就能...
在Spring Quartz中,Spring负责管理Quartz的bean和生命周期。 2. **Quartz Scheduler**: Quartz 是一个完全由Java编写的开源作业调度框架,用于创建、调度、执行和控制工作。它可以用于在任何Java应用中实现复杂的...
下面是一个简单的Spring配置文件`applicationContext.xml`示例,展示了如何在Spring容器中配置一个`GregorianCalendar`类型的bean: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www....
- **Spring中的配置**:在Spring框架中,可以通过XML配置文件来定义Quartz的任务。例如,以下代码展示了如何配置一个名为`loadCategoryToCacheTask`的任务,并指定具体的执行方法: ```xml <bean id=...
8. **在配置中使用**:SpEL可以在Spring的XML配置中用于动态配置bean的属性,或者在`@Value`注解中用于注入运行时计算的值。 在Spring 3.0中,MVC和EL的结合使用,极大地提升了开发效率和代码质量。通过SpEL,...
在与 Spring 集成时,Quartz 可以利用 Spring 的依赖注入(DI)特性,使得任务的管理和执行变得更加方便。 ### Quartz 基本概念 1. **Job**:这是 Quartz 中的基本执行单元,代表一个具体的任务。你需要创建 Job ...
1. **引入依赖**:在项目的pom.xml文件中添加Quartz和Spring相关的依赖库。 2. **配置Quartz**:使用Spring的XML配置文件或者Java配置类来定义Quartz的调度器、触发器和作业。 3. **创建作业**:实现Quartz提供的`...