加载的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>
运行结果如下: