如果某一个属性中需要赋值空对象 null对象 而非是”null”———我们可以利用

    如果某一个属性中带有特殊字符 String类型
    需要利用这个标签来进行操作<![CDATA[xxx]]>
    注意:这个标签需要以分层的形式 写在中间标签也是)

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. https://www.springframework.org/schema/beans/spring-beans.xsd">
    6. <bean name="student" class="domain.Student">
    7. <constructor-arg name="sid" value="1" type="java.lang.Integer"></constructor-arg>
    8. <constructor-arg name="sname">
    9. <value><![CDATA[klxh~~]]></value>
    10. </constructor-arg>
    11. <constructor-arg name="ssex" value="女" type="java.lang.String"></constructor-arg>
    12. <constructor-arg name="sage" value="18" type="java.lang.Integer"></constructor-arg>
    13. </bean>
    14. </beans>

    image.png

    我们正常开发中,需要赋值的属性很多时候并不是8大基本类型以及一些原生包装类,而是一些其他对象,可以通过来实现赋值。
    例如一个房间中有电脑:
    Room

    package domain;
    
    public class Room {
    
        private String name;//机房房间号 属性
        private Computer computer;//机房中有一台电脑 属性 (has a) 聚合 组合 包含
    
        @Override
        public String toString() {
            return "Room{" +
                    "name='" + name + '\'' +
                    ", computer=" + computer +
                    '}';
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Computer getComputer() {
            return computer;
        }
        public void setComputer(Computer computer) {
            this.computer = computer;
        }
    }
    

    Computer

    package domain;
    
    public class Computer {
    
        private String brand;//电脑品牌   ThinkPad
        private String name;//电脑型号    S5
        private Float price;//电脑价格    8000
    
        public Computer() {
        }
    
        public Computer(String brand, String name, Float price) {
            this.brand = brand;
            this.name = name;
            this.price = price;
        }
    
    
        @Override
        public String toString() {
            return "Computer{" +
                    "brand='" + brand + '\'' +
                    ", name='" + name + '\'' +
                    ", price=" + price +
                    '}';
        }
    
        public void setBrand(String brand) {
            this.brand = brand;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setPrice(Float price) {
            this.price = price;
        }
    
        public String getBrand() {
            return brand;
        }
        public String getName() {
            return name;
        }
        public Float getPrice() {
            return price;
        }
    }
    

    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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean name="computer" class="domain.Computer">
            <constructor-arg name="brand" value="ThinkPad"></constructor-arg>
            <constructor-arg name="name" value="s5"></constructor-arg>
            <constructor-arg name="price" value="8000"></constructor-arg>
        </bean>
        <bean name="room" class="domain.Room">
            <property name="name" value="001"></property>
            <property name="computer" ref="computer"></property>
        </bean>
    
    </beans>
    

    image.png

    如果对象里面的那个属性对象是私有的,不想别其他人访问,我们可以采用内部bean的写法

    <?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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean name="room" class="domain.Room">
            <property name="name" value="001"></property>
    
            <property name="computer">
                <bean class="domain.Computer">
                    <constructor-arg name="brand" value="ThinkPad"></constructor-arg>
                    <constructor-arg name="name" value="s5"></constructor-arg>
                    <constructor-arg name="price" value="8000"></constructor-arg>
                </bean>
            </property>
    
        </bean>
    
    </beans>
    

    Controller—-Service—-Dao
    StudentController

    package controller;
    
    import service.StudentService;
    
    public class StudentController {
    
        private StudentService service;
        public StudentController(StudentService service) {
            this.service = service;
        }
    
        public void login(){
            System.out.println("controller层接收请求信息");
            //获取请求发送过来的信息
            //调用service去处理业务---->
            service.login();
            //根据service处理的结果 给予响应
            System.out.println("controller层给予响应");
        }
    }
    

    StudentService

    package service;
    
    import dao.StudentDao;
    
    public class StudentService {
    
        private StudentDao dao;
        public StudentService(StudentDao dao) {
            this.dao = dao;
        }
    
        public void login(){
            //1.方法应该有参数  Controller传递给我的
            System.out.println("service层接收请求发来的信息");
            //2.做一些业务处理  判断   dao调用查询方法----->
            dao.selectOne();
            //3.将判断的结果返回
            System.out.println("service层处理业务并返回");
        }
    }
    

    StudentDao

    package dao;
    
    import domain.Student;
    
    public class StudentDao {
    
        public Student selectOne(){
            //1.方法里面有参数 service层给我的
            System.out.println("dao层接收service层传递的信息");
            //2.自己写一条Sql语句
            System.out.println("执行数据库操作");
            //3.调用SqlSession做事就可以了
            System.out.println("将查询的结果返回");
            return null;
        }
    }
    

    TestMain

    package test;
    
    import controller.StudentController;
    import domain.Room;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class TestMain {
        public static void main(String[] args){
            //演示Spring的DI
            BeanFactory factory=new ClassPathXmlApplicationContext("ApplicationContext.xml");
            StudentController controller=(StudentController)factory.getBean("controller") ;
            controller.login();
    
        }
    }
    

    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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean name="controller" class="controller.StudentController">
            <constructor-arg name="service">
                <bean name="service" class="service.StudentService">
                    <constructor-arg name="dao">
                        <bean name="dao" class="dao.StudentDao"></bean>
                    </constructor-arg>
                </bean>
            </constructor-arg>
        </bean>
    
    </beans>
    

    写法二:

    <?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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean name="controller" class="controller.StudentController">
            <constructor-arg name="service" ref="service"></constructor-arg>
        </bean>
        <bean name="service" class="service.StudentService">
            <constructor-arg name="dao" ref="dao"></constructor-arg>
        </bean>
        <bean name="dao" class="dao.StudentDao"></bean>
    
    </beans>
    

    image.png