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

加载的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>


运行结果如下:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值