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
文件结构图如下:
![](http://my.csdn.net/uploads/201205/23/1337775414_1896.jpg)
代码演示如下:
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>
运行结果如下:
![](http://my.csdn.net/uploads/201205/23/1337776563_1562.jpg)
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
文件结构图如下:
![](http://my.csdn.net/uploads/201205/23/1337775414_1896.jpg)
代码演示如下:
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>
运行结果如下:
![](http://my.csdn.net/uploads/201205/23/1337776563_1562.jpg)
相关文章推荐
- Spring注入中byType和byName的总结
- Spring注入中byType和byName的总结
- Spring-自动注入ByName,ByType
- Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea
- Spring注入中byType和byName的总结
- Spring的属性注入, byName和byType还有注入List属性
- Spring注入中byType和byName的总结
- Spring注入中byType和byName的总结
- Spring 中的byName与 byType
- Spring的自动装配(byName;byType)
- Spring 中的byName与 byType
- spring 之 注入之 by name or by type, or both ?
- spring使用注解通过子类注入父类的私有变量
- Spring使用@PostConstruct注解完成子类注入父类私有变量
- 关于怎么解决从ajax传入的json参数注入到Controller的接收对象 以及如何在Spring Boot项目使用参数校验
- Spring AMQP实例 以及Spring 配置文件动态注入属性使用实战
- (5) Spring 如何装配 集合类 以及 【第二种 依赖注入 方式】使用 构造器 注入
- Spring的自动装配(byName;byType)
- Java Spring Tutorial -- autowire byName, byType, constructor
- (6) Spring 如何装配 集合类 以及 【第二种 依赖注入 方式】使用 构造器 注入