您的位置:首页 > 编程语言 > Java开发

Spring:注解版依赖注入+注入collection值演示

2012-05-26 16:45 417 查看
加载的jar有:



log4j-1.2.16.jar

org.springfaramework.asm-3.0.5.release.jar

org.springfaramework.beans-3.0.5.release.jar

org.springfaramework.context-3.0.5.release.jar

org.springfaramework.core-3.0.5.release.jar

org.springfaramework.expression-3.0.5.release.jar

asm-all.3.3.1.jar

cglib-2.2.2.jar

commons-logging-1.1.1.jar

文件结构图如下:





代码演示如下:

[b][b]MyDao.java[/b]

[/b]

package org.baicai.spring.annotation;

import javax.annotation.PostConstruct;

import javax.annotation.PreDestroy;

import org.springframework.stereotype.Component;

//标注组件

@Component

public class MyDao {

public MyDao()

{

System.out.println("in MyDao");

}

//标注生命同期方法(初始化)

@PostConstruct

public void init()

{

System.out.println("in MyDao init() ");

}

public void say(String name)

{

System.out.println(name+":你好!");

}

//标注生命周期方法(销毁)

@PreDestroy

public void close()

{

System.out.println("in MyDao close() ");

}

}

MyService.java

package org.baicai.spring.annotation;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

//标注服务组件

@Service

public class MyService {

//配置依赖注入

@Autowired(required=true)

public MyDao dao;

public MyService()

{

System.out.println("in MyService()");

}

public MyDao getDao()

{

return dao;

}

public void setDao(MyDao dao)

{

this.dao=dao;

}

public void say(String name)

{

dao.say(name);

}

}

[b]Demo.java[/b]

package org.baicai.spring.annotation;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Demo {

public static void main(String[] args)

{

AnnotationConfigApplicationContext context= new AnnotationConfigApplicationContext();

context.registerShutdownHook();

//自动扫描包里面的class 多个用,分开

context.scan("org.baicai.spring.annotation");

System.out.println("==========================================");

//更新context状态

context.refresh();

System.out.println("==========================================");

MyService service=context.getBean(MyService.class);

service.say("Annotation");

service.say("张三");

}

}

[b]Bean
.java

[/b]

package org.baicai.spring.collection;

import java.util.Date;

import java.util.List;

import java.util.Map;

import java.util.Properties;

public class Bean {

private List<String> list;

private Properties properties;

private Map<String, String> map;

private Date date;

public List<String> getList() {

return list;

}

public void setList(List<String> list) {

this.list = list;

}

public Properties getProperties() {

return properties;

}

public void setProperties(Properties properties) {

this.properties = properties;

}

public Map<String, String> getMap() {

return map;

}

public void setMap(Map<String, String> map) {

this.map = map;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public void showInfo() {

System.out.printf("list:%s%nproperties:%s%nmap:%s%ndate:%s%n", list,

properties, map, date);

}

}

[b]BeanOne
.java

[/b]

package org.baicai.spring.collection;

public class BeanOne {

}

[b]BeanTwo
.java

[/b]

package org.baicai.spring.collection;

public class BeanTwo {

private BeanOne beanOne;

public void setBeanOne(BeanOne beanOne)

{

this.beanOne=beanOne;

}

public BeanOne getBeanOne()

{

return beanOne;

}

public void showBeanOne()

{

System.out.println(getBeanOne());

}

}

MyPropertyEditor.java

package org.baicai.spring.collection;

import java.beans.PropertyEditorSupport;

import java.text.ParseException;

import java.text.SimpleDateFormat;

public class MyPropertyEditor extends PropertyEditorSupport {

private SimpleDateFormat sdf=new SimpleDateFormat();

private String format;

public String getFormat() {

return format;

}

public void setFormat(String format) {

this.format = format;

sdf.applyPattern(format);

}

@Override

public void setAsText(String text) throws IllegalArgumentException {

try {

setValue(sdf.parse(text));

} catch (ParseException e) {

throw new IllegalArgumentException();

}

}

}

context.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-3.0.xsd">
<!-- 注册属性编辑器(类型转换) -->

<bean id="datePropertyEditor" class="org.baicai.spring.collection.MyPropertyEditor">

<property name="format" value="yyyy-MM-dd"></property>

</bean>

<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">

<property name="customEditors">

<map>

<!-- 注册java.util.Date类型由dataPropertyEditor负责转换 -->

<entry key="java.util.Date" value-ref="datePropertyEditor"></entry>

</map>

</property>

</bean>

<!-- List集合对象 -->

<bean id="list" class="java.util.ArrayList">

<constructor-arg index="0">

<list>

<value>one</value>

<value>two</value>

<value>three</value>

</list>

</constructor-arg>

</bean>

<!-- 集合以及特殊字段的注入(p:属性注入方式是xmlns:p="http://www.springframework.org/schema/p"提供的功能) -->

<bean id="bean" class="org.baicai.spring.collection.Bean" p:date="1991-01-01">

<property name="list" ref="list"></property>

<property name="properties">

<props>

<prop key="one">一</prop>

<prop key="two">二</prop>

<prop key="three">三</prop>

<prop key="four">四</prop>

</props>

</property>

<property name="map">

<map>

<entry key="Michael" value="米迦勒(天使名),迈克尔(人名)"></entry>

<entry key="Control" value="控制"></entry>

</map>

</property>

</bean>

<!-- scope默认为单例(singleton)应用程序每次调用的都是同一个Bean prototype 每调用一次Bean对象都会重新产生 -->

<bean id="beanOne" class="org.baicai.spring.collection.BeanOne" scope="prototype"/>

<bean id="beanTwo" class="org.baicai.spring.collection.BeanTwo" >

<!-- 普通版本

<property name="beanOne" ref="beanOne"/>

-->

<!-- 方法注入版本 -->

<lookup-method bean="beanOne" name="getBeanOne"/>

</bean>

</beans>

执行结果如下:








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐