Spring注入有继承关系的类(1)

news/2024/7/24 7:44:11 标签: java, spring
一个类一个类的注入
1.AClass类
java">package com.bijian.spring.test2;

public class AClass {

    String a;
    String b;
   
    public String getA() {
        return a;
    }
    public void setA(String a) {
        this.a = a;
    }
    public String getB() {
        return b;
    }
    public void setB(String b) {
        this.b = b;
    }
}
 
2.BClass类
java">package com.bijian.spring.test2;

public class BClass extends AClass {

    String c;

    public String getC() {
        return c;
    }

    public void setC(String c) {
        this.c = c;
    }

    String fn() {
        return a + b + c;
    }
}
 
3.AClass类配置文件aclass2.xml
<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="bean1" class="com.bijian.spring.test2.AClass">
      <property name="a">
          <value>1</value>
      </property>
      <property name="b">
          <value>2</value>
      </property>
  </bean>
</beans>
 
4.BClass类配置文件bclass2.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  
   
<beans>  
  <bean id="bean2" class="com.bijian.spring.test2.BClass">
      <property name="c">
          <value>3</value>
     </property>
  </bean>
</beans>
 
5.应用测试类Test.java
java">package com.bijian.spring.test2;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

public static void main(String[] args) {
       
        ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"aclass2.xml","bclass2.xml"});
       
        //得到子类,结果是:nullnull3
        BClass bclass = (BClass)ac.getBean("bean2");
        String res = bclass.fn();
        System.out.println(res);
    }
}
      
        由结果不难看出,子类没有拥有 注入给父类的属性值。
        如果我们想要子类拥有注入给父类的属性值,该怎么办呢?可以通过修改配置文件和应用测试类来达到,如下所示:
1.AClass类
java">package com.bijian.spring.test3;

public class AClass {

    String a;
    String b;
   
    public String getA() {
        return a;
    }
    public void setA(String a) {
        this.a = a;
    }
    public String getB() {
        return b;
    }
    public void setB(String b) {
        this.b = b;
    }
}
 
2.BClass类
java">package com.bijian.spring.test3;

public class BClass extends AClass {

    String c;

    public String getC() {
        return c;
    }

    public void setC(String c) {
        this.c = c;
    }

    String fn() {
        return a + b + c;
    }
}
 
3.配置一个父类的配置文件parent3.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  

<beans>  
  <bean id="abstractbean" abstract="true">
      <property name="a">
          <value>1</value>
      </property>
      <property name="b">
          <value>2</value>
      </property>
  </bean>
</beans>
 
4.AClass类配置文件aclass3.xml
<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="bean1" class="com.bijian.spring.test3.AClass" parent="abstractbean"/>  
</beans>
 
5.BClass类配置文件bclass3.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  

<beans>
  <bean id="bean2" class="com.bijian.spring.test3.BClass" parent="abstractbean">
      <property name="c">
          <value>3</value>
     </property>
  </bean>
</beans>
 
6.应用测试类Test.java
java">package com.bijian.spring.test3;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

public static void main(String[] args) {
       
        ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"parent3.xml","aclass3.xml","bclass3.xml"});
       
        //得到子类,结果是:123
        BClass bclass = (BClass)ac.getBean("bean2");
        String res = bclass.fn();
        System.out.println(res);
    }
}
 

http://www.niftyadmin.cn/n/1319210.html

相关文章

CSS background-postion定位是个细活,要像做精密仪器一样小心翼翼

1. css背景属性background-postion&#xff0c;可以取值&#xff1a;left | center | right | top | bottom 例如&#xff1a; background-postion&#xff1a;left; background-postion&#xff1a;center ; background-postion&#xff1a;right ; background-postion&#…

配置flutter遇到的android studio问题

问题1 解决&#xff1a; 1.在android studio里面打开SDK Manager 选择Api Level 29或者以上版本的SDK Platforms 2.执行命令&#xff1a;flutter doctor --android-licenses 问题2 解决 1.点击配置 Configure 选项&#xff0c;选择 Plugins 子选项,搜索Dart 和 Flutter安装…

Libevent笔记

Libevent简介 libevent是一个基于事件触发的网络库&#xff0c;适用于windows、linux、bsd等多种平台&#xff0c;内部使用select、epoll、kqueue等系统调用管理事件机制。 官网&#xff1a;http://libevent.org/ 特点&#xff1a; 事件驱动&#xff0c;高性能; 轻量级&#x…

flutter环境配置mac

1.官网下载sdk&#xff0c;解压后到你想要放的文件目录下&#xff0c;后解压 注意&#xff1a;下载的sdk解压后是flutter文件夹并且里面有.git文件&#xff0c;不然会报下面的错误 Error: The Flutter directory is not a clone of the GitHub project. The flutter tool req…

Spring注入有继承关系的类(2)

被注入类的父类有相应的属性&#xff0c;Spring可以直接注入相应的属性&#xff0c;如下所例&#xff1a;1.AClass类 package com.bijian.spring.test4;public class AClass {private String a;private String b;public String getA() {return a;}public void setA(String a) {…

jsp页面中空格字符的表示

空格字符-->不写为“&nbsp”&#xff0c;而写为“ ”。前者ie可以识别&#xff0c;但chrome不识别。转载于:https://www.cnblogs.com/chickenrun/archive/2012/10/23/2735765.html

react虚拟DOM,JSX和React.creatElement

虚拟DOM 1.什么是虚拟DOM&#xff1f; 虚拟dom是一个js对象&#xff0c;来表示真实的DOM节点&#xff0c;最终是根据这个js对象来渲染到真实的DOM上。 当状态改变时&#xff0c;首先先更新js对象&#xff0c;然后通过diff算法对比新旧虚拟DOM节点&#xff0c;然后更新到真实的…

Spring基础实例(依赖注入和控制反转)

前提条件&#xff1a;在http://www.springsource.org/download网站上下载Spring框架&#xff0c;并将spring.jar、log4j-1.2.15.jar、commons-logging.jar加载至工程1.武器接口 package com.bijian.spring.base3;public interface Weapon {void killEnemy(); } 2.武器实现类枪 …