`
albb0608
  • 浏览: 63894 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring注入bean的时候如何在xml中表示Calendar类型

阅读更多
看到网上有人问
引用
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,遇到了这个问题,简单的解决了一下。
分享到:
评论
1 楼 lzk562209141 2010-10-15  
写的很到位,学习……支持楼主!

相关推荐

    day38 13-Spring的Bean的属性的注入:SpEL注入

    在Spring框架中,Bean的属性注入是其核心功能之一,使得我们可以轻松地管理对象的依赖关系,无需在代码中硬编码这些依赖。本篇将详细探讨Spring中的SpEL(Spring Expression Language)注入,这是一种强大的表达式...

    Spring注入Date类型的三种方法总结

    在Spring框架中,注入Date类型的属性有多种方式,下面我们将详细讲解上述三种方法。 1. 利用`SimpleDateFormat`的构造方法注入: 这种方式通过创建一个`SimpleDateFormat`实例来解析日期字符串,然后将解析后的日期...

    Spring.zip

    通过在XML配置文件中定义bean并指定其属性值,或者使用注解如`@Value`,可以实现基本值的注入。 2. **Spring注入集合和数组**:除了基本类型,Spring还支持注入集合类型,如List、Set、Map等,以及数组。这允许我们...

    浅谈Spring中的Quartz配置

    在Spring中配置Quartz,我们通常会创建一个Spring配置文件,例如`quartz-config.xml`,并在其中定义相关的Bean。以下是一个基本的配置示例: ```xml &lt;bean id="schedulerFactoryBean" class="org.springframework....

    spring学习方法

    - 在Java代码中,可以使用`ApplicationContext`接口来获取Spring容器中的Bean。以下是一个示例代码: ```java package day01; import java.util.Calendar; import org.springframework.context.ApplicationContext...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    quartz和spring-quartz

    2. **XML配置**: 在Spring的配置文件中,你可以声明Job和Trigger,然后通过SchedulerFactoryBean来创建和配置Scheduler。这种方式简化了代码,使得任务配置更加灵活。 3. **编程式API**: 除了XML配置,还可以使用...

    Spring中配置定时器详解.doc

    在Spring中配置定时器,首先需要在`applicationContext.xml`配置文件中定义定时任务相关的Bean。具体步骤如下: 1. **定义`ScheduledTimerTask` Bean**:该Bean用于封装定时任务的执行逻辑,其`delay`属性表示首次...

    SPRING 定时器的使用

    在Spring配置文件中声明定时任务类以及相关的依赖注入。 ```xml &lt;!-- 声明定时器任务 --&gt; &lt;bean id="dayDataTimerJob" class="xj.action.DayDataTimerTask"&gt; &lt;ref bean="jdbc1Service"/&gt; &lt;ref bean=...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    在Spring配置文件中,我们需要创建三个主要的bean:`quartzMsg`、`msgjobtask`和`msgdoTime`。`quartzMsg`是`QuartzJob`的实例,`msgjobtask`定义了要调用的工作类和方法,而`msgdoTime`则定义了触发任务的时间。 `...

    spring-expression-3.2.3.release.jar.zip

    在实际应用中,SpEL广泛用于Spring的依赖注入、AOP切面、MVC控制器以及其他需要动态计算的场景。例如,在配置文件中,我们可以使用SpEL来动态设置Bean的属性值,如`['myPropertyKey']}" /&gt;`,这样系统属性的变化就能...

    spring-quartz所需jar包

    在Spring Quartz中,Spring负责管理Quartz的bean和生命周期。 2. **Quartz Scheduler**: Quartz 是一个完全由Java编写的开源作业调度框架,用于创建、调度、执行和控制工作。它可以用于在任何Java应用中实现复杂的...

    java学习笔记2

    下面是一个简单的Spring配置文件`applicationContext.xml`示例,展示了如何在Spring容器中配置一个`GregorianCalendar`类型的bean: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www....

    Quartz在Spring中动态设置cronExpression.docx

    - **Spring中的配置**:在Spring框架中,可以通过XML配置文件来定义Quartz的任务。例如,以下代码展示了如何配置一个名为`loadCategoryToCacheTask`的任务,并指定具体的执行方法: ```xml &lt;bean id=...

    spring3. 0 MVC EL

    8. **在配置中使用**:SpEL可以在Spring的XML配置中用于动态配置bean的属性,或者在`@Value`注解中用于注入运行时计算的值。 在Spring 3.0中,MVC和EL的结合使用,极大地提升了开发效率和代码质量。通过SpEL,...

    quartz 基本使用及与Spring的整合实例Demo

    在与 Spring 集成时,Quartz 可以利用 Spring 的依赖注入(DI)特性,使得任务的管理和执行变得更加方便。 ### Quartz 基本概念 1. **Job**:这是 Quartz 中的基本执行单元,代表一个具体的任务。你需要创建 Job ...

    Spring集成Quartz调度框架.pdf

    1. **引入依赖**:在项目的pom.xml文件中添加Quartz和Spring相关的依赖库。 2. **配置Quartz**:使用Spring的XML配置文件或者Java配置类来定义Quartz的调度器、触发器和作业。 3. **创建作业**:实现Quartz提供的`...

Global site tag (gtag.js) - Google Analytics