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

Spring:byName,byType注入演示 以及父类的使用

2012-05-23 20:33 274 查看
加载的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

commons-logging-1.1.1.jar

文件结构图如下:






代码演示如下:

NameBean.java

package org.baicai.spring.byName;

public class NameBean {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}



}


ByNameOne.java



package org.baicai.spring.byName;

public class ByNameOne {

private NameBean nameBean;

public NameBean getNameBean() {

return nameBean;

}

public void setNameBean(NameBean nameBean) {

this.nameBean = nameBean;

}

public void say()

{

System.out.println("ByNameOne:"+nameBean.getName());

}

}

ByNameTwo.java



package org.baicai.spring.byName;

public class ByNameTwo {

private NameBean nameBean;

public NameBean getNameBean() {

return nameBean;

}

public void setNameBean(NameBean nameBean) {

this.nameBean = nameBean;

}

public void say()

{

System.out.println("ByNameTwo:"+nameBean.getName());

}

}

TypeBean.java



package org.baicai.spring.byType;

public class TypeBean {

private String type;

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

}

ByTypeOne.java



package org.baicai.spring.byType;

public class ByTypeOne {

private TypeBean one;

public TypeBean getOne() {

return one;

}

public void setOne(TypeBean one) {

this.one = one;

}

public void showOne()

{

System.out.println("One 类型:"+one.getType());

}

}

ByTypeTwo.java



package org.baicai.spring.byType;

public class ByTypeTwo {

private TypeBean two;

public TypeBean getTwo() {

return two;

}

public void setTwo(TypeBean two) {

this.two = two;

}

public void showTwo()

{

System.out.println("two 类型:"+two.getType());

}

}

SuperBean.java



package org.baicai.spring.superclass;

public class SuperBean {

private String info;

public String getInfo() {

return info;

}

public void setInfo(String info) {

this.info = info;

}

}

ExtendOne.java



package org.baicai.spring.superclass;

public class ExtendOne extends SuperBean {

public void show()

{

System.out.println("我是一个继承者!我叫One");

System.out.println(super.getInfo());

}

}

ExtendTwo.java



package org.baicai.spring.superclass;

public class ExtendTwo extends SuperBean{

public void show()

{

System.out.println("我是另外一个继承者!我叫Two!");

System.out.println(super.getInfo());

}

}

Demo.java

package org.baicai.spring.demo;

import org.baicai.spring.byName.ByNameOne;

import org.baicai.spring.byName.ByNameTwo;

import org.baicai.spring.byType.ByTypeOne;

import org.baicai.spring.byType.ByTypeTwo;

import org.baicai.spring.superclass.ExtendOne;

import org.baicai.spring.superclass.ExtendTwo;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.AbstractApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo {

public static void main(String[] args) {

ApplicationContext context = new ClassPathXmlApplicationContext("/context*.xml");

AbstractApplicationContext ac = (AbstractApplicationContext) context;

ac.registerShutdownHook();

ByNameOne nameOne=context.getBean("nameOne",ByNameOne.class);

nameOne.say();

ByNameTwo nameTwo=context.getBean("nameTwo",ByNameTwo.class);

nameTwo.say();

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

ByTypeOne typeOne=context.getBean("typeOne",ByTypeOne.class);

typeOne.showOne();

ByTypeTwo typeTwo=context.getBean("typeTwo",ByTypeTwo.class);

typeTwo.showTwo();

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

ExtendOne extendOne=context.getBean("extendOne",ExtendOne.class);

extendOne.show();

ExtendTwo extendTwo=context.getBean("extendTwo",ExtendTwo.class);

extendTwo.show();

}

}

context_byName.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"

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
default-autowire="byName">

<!--default-autowire="byName" 表示自动注入名称和bean相同的属性 -->

<bean id="nameBean" class="org.baicai.spring.byName.NameBean">

<property name="name" value="张三"></property>

</bean>

<!-- 下面的两个bean没有配置属性值,但由于属性名称和容器中的id(nameBean)一致,将会把nameBean自动注入给下面两个类 -->

<bean id="nameOne" class="org.baicai.spring.byName.ByNameOne"></bean>

<bean id="nameTwo" class="org.baicai.spring.byName.ByNameTwo"></bean>

</beans>

context_byType.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"

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
default-autowire="byType">

<!--default-autowire="byName" 表示自动注入类型和bean相同的属性 -->

<bean id="typeBean" class="org.baicai.spring.byType.TypeBean">

<property name="type" value="自定义类型"></property>

</bean>

<!-- 下面的两个bean没有配置属性值,但由于属性类型和容器中的id(typeBean)一致,将会把typeBean类型和其它class属性类型一致的值自动注入给该类 -->

<bean id="typeOne" class="org.baicai.spring.byType.ByTypeOne"></bean>

<bean id="typeTwo" class="org.baicai.spring.byType.ByTypeTwo"></bean>

</beans>

context_super.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"

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 注册一个抽象的父类型,abstract=“true” 表示类没有办法初始化 -->

<bean id="superBean" class="org.baicai.spring.superclass.SuperBean" abstract="true">

<!-- 仍然可以注入属性 -->

<property name="info" value="dream"></property>

</bean>

<!-- 字义子类,使用parent属性表示父类型 -->

<bean id="extendOne" class="org.baicai.spring.superclass.ExtendOne" parent="superBean"></bean>

<bean id="extendTwo" class="org.baicai.spring.superclass.ExtendTwo" parent="superBean"></bean>

</beans>

运行结果如下:




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