• spring02IOC


    1.创建所需要的Student 和 Grade实体类

    public class Student {   //学生实体类
    
        private  String   name;  //姓名
        private  Integer  age;  //年龄
        private  Grade   grade;  //年级
        
        
        
        
        @Override
        public String toString() {
            return "Student [name=" + name + ", age=" + age + ", grade=" + grade
                    + "]";
        }
        public Student() {
            super();
        }
        public Student(String name, Integer age) {
            super();
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        //  set()  DI 依赖注入
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public Grade getGrade() {
            return grade;
        }
        public void setGrade(Grade grade) {
            this.grade = grade;
        }
        
        
        
    }
    public class Grade {   //年级实体类
        private String  name;  //年级名称
    
        
        @Override
        public String toString() {
            return "Grade [name=" + name + "]";
        }
    
        public Grade() {
            super();
        }
    
        public Grade(String name) {
            super();
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        
        
    
    }

    2.创建对应的applicationContext.xml文件 方法项目中的src目录下

    <?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.xsd">
    
          <!-- 配置Grade 类的bean  01.设值注入  保证类中有属性对应的set()即可 -->
      <bean id="grade" class="cn.bdqn.bean.Grade">
           <!-- name的属性值  默认使用DI 查询类中的setName() -->
       <property name="name" value="1年级"/>
      </bean>
    
        <!--  配置学生Bean   实例化学生对象   默认执行的是无参构造 -->
        <bean id="student" class="cn.bdqn.bean.Student">
            <property name="name" value="小马"/>
            <property name="age" value="50"/>
            <!-- 对类中的域属性  赋值  使用ref -->
            <property name="grade" ref="grade"/>
        </bean>
    </beans>

    3.创建对应的测试类

    public class StudentTest {
        
        @Test
        public  void  test01(){
            ApplicationContext context=
                    new ClassPathXmlApplicationContext("applicationContext.xml");
            /*
             * 获取容器给我们创建的Student对象   ioc的体现
             *  本身由自身创建对象的过程,把创建对象的权利移交给了spring容器!  IOC  控制反转
             * 
             * 之前 Student student=new Student();
             * 现在context.getBean("student");
             * context容器来创建对象了
             * 
             */
             Student student=(Student) context.getBean("student");
            System.out.println(student);
        }
    }

    4.运行查看效果

    5.修改Student类中的代码 为了验证 使用构造注入的时候可以省略set、get以及无参构造方法

    public class Student {   //学生实体类
    
        private  String   name;  //姓名
        private  Integer  age;  //年龄
        private  Grade   grade;  //年级
        
        @Override
        public String toString() {
            return "Student [name=" + name + ", age=" + age + ", grade=" + grade
                    + "]";
        }
        //带参构造
        public Student(String name, Integer age, Grade grade) {
            super();
            this.name = name;
            this.age = age;
            this.grade = grade;
        }
        
    }

    6.修改applicationContext.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.xsd">
    
          <!-- 配置Grade 类的bean -->
      <bean id="grade" class="cn.bdqn.bean.Grade">
           <!-- name的属性值  默认使用DI 查询类中的setName() -->
       <property name="name" value="1年级"/>
      </bean>
        <!-- 02.构造注入    调用带参构造来创建对象的实例
                  保证类中有相应的带参构造    set()和无参构造 都可以 消失了...  -->
        <bean id="student" class="cn.bdqn.bean.Student">
              <!-- 001.使用参数下标
           <constructor-arg  index="0" value="小马"/>
           <constructor-arg  index="1" value="50"/>
           <constructor-arg  index="2" ref="grade"/> -->
            <!--002.按照参数的顺序   必须和参数顺序 一致 
           <constructor-arg   value="小马1"/>
           <constructor-arg   value="501"/>
           <constructor-arg   ref="grade"/> -->
           <!--003.使用构造参数名称 不是全局变量      进行注入   推荐使用 -->
           <constructor-arg  name="name" value="小马2"/>
           <constructor-arg  name="age"  value="502"/>
           <constructor-arg  name="grade" ref="grade"/>
        </bean>
        
    </beans>

    7.测试代码不变直接运行查看效果

     8.使用p命名空间注入  修改Student实体类,因为p注入需要对应的set()和无参构造器

    public class Student {   //学生实体类
    
        private  String   name;  //姓名
        private  Integer  age;  //年龄
        private  Grade   grade;  //年级
        
        @Override
        public String toString() {
            return "Student [name=" + name + ", age=" + age + ", grade=" + grade
                    + "]";
        }
        
        // p 注入的时候需要
        public Student() {
            super();
        }
        //带参构造
        public Student(String name, Integer age, Grade grade) {
            super();
            this.name = name;
            this.age = age;
            this.grade = grade;
        }
        //p 必须要有set()
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public Grade getGrade() {
            return grade;
        }
        public void setGrade(Grade grade) {
            this.grade = grade;
        }
        
        
        
        
    }
    Student实体类

    9.修改applicationContext.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"
        xmlns:p="http://www.springframework.org/schema/p"  
        xmlns:c="http://www.springframework.org/schema/c"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd">
    
          <!-- 配置Grade 类的bean -->
      <bean id="grade" class="cn.bdqn.bean.Grade">
           <!-- name的属性值  默认使用DI 查询类中的setName() -->
       <property name="name" value="1年级"/>
      </bean>
        <!-- 03.使用p命名空间注入   必须有set()和 无参构造函数 
        <bean id="student" class="cn.bdqn.bean.Student" p:name="小马哥" 
        p:age="50" p:grade-ref="grade"/>-->
        
        
        <!-- 04.使用c命名空间注入 必须要有对应的带参构造  -->
         <bean id="student" class="cn.bdqn.bean.Student" c:name="小马哥" 
        c:age="50" c:grade-ref="grade"/>
    </beans>
    applicationContext.xml

     10.测试代码不动  直接运行看效果

  • 相关阅读:
    Android的读写文件及权限设置
    surfaceView和View的区别
    git的常见问题
    APP的缓存文件放在哪里?
    AndroidStudio遇到过的问题
    订单和支付状态不同步解决方法
    支付宝支付不成功原因
    格式化输出%s和%S的区别
    Android SDK更新下载失败以及Studio首次安装取消自动下载SDK
    SPOJ 104 HIGH
  • 原文地址:https://www.cnblogs.com/999-/p/6053092.html
Copyright © 2020-2023  润新知