• 依赖注入(六)


    文章目录

    一、setter注入

    • 依赖注入:Set注入
    • 依赖:bean对象的创建依赖于容器!
    • 注入:bean对象中的所有属性,由容器来注入!

    1.案例

    1.BookDao接口

    package com.study.dao;
    
    public interface BookDao {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.BookDaoImpl实现类

    package com.study.dao.impl;
    
    import com.study.dao.BookDao;
    
    public class BookDaoImpl implements BookDao {
        public void save() {
            System.out.println("BookDaoImpl...");
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.UserDao接口

    package com.study.dao;
    
    public interface UserDao {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.UserServiceImpl实现类

    package com.study.dao.impl;
    
    import com.study.dao.UserDao;
    
    public class UserDaoImpl implements UserDao {
        private String name;
        private int age;
        public void save() {
            System.out.println(name+","+age);
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    5.BookService接口

    package com.study.service;
    
    public interface BookService {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6.BookServiceImpl实现类

    package com.study.service.impl;
    
    import com.study.dao.BookDao;
    import com.study.dao.UserDao;
    import com.study.service.BookService;
    
    public class BookServiceImpl implements BookService {
        //简单类型
        private BookDao bookDao;
        private UserDao userDao;
        public void save() {
            bookDao.save();
            userDao.save();
            System.out.println("BookServiceImpl...");
        }
    
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
    
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    7.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">
        <bean id="bookDao" class="com.study.dao.impl.BookDaoImpl"></bean>
        <bean id="UserDao" class="com.study.dao.impl.UserDaoImpl">
            <property name="name" value="小马哥"></property>
            <property name="age" value="34"></property>
        </bean>
        <bean id="bookService" class="com.study.service.impl.BookServiceImpl">
            <property name="bookDao" ref="bookDao"></property>
            <property name="userDao" ref="UserDao"></property>
        </bean>
    
    
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    8.Test测试类

    import com.study.dao.BookDao;
    import com.study.service.BookService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Test {
        public static void main(String[] args) {
            ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
            BookService service = app.getBean(BookService.class);
            service.save();
        }
    }
    /*
    BookDaoImpl...
    小马哥,34
    BookServiceImpl...
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    二、构造器注入

    1. 使用无参构造创建对象,默认!
    2. 假设我们要使用有参构造创建对象。

    1.案例

    1.BookDao接口

    package com.study.dao;
    
    public interface BookDao {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.BookDaoImpl实现类

    package com.study.dao.impl;
    
    import com.study.dao.BookDao;
    
    public class BookDaoImpl implements BookDao {
        public void save() {
            System.out.println("BookDaoImpl...");
        }
    }
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.UserDao接口

    package com.study.dao;
    
    public interface UserDao {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.UserServiceImpl实现类

    package com.study.dao.impl;
    
    import com.study.dao.UserDao;
    
    public class UserDaoImpl implements UserDao {
        private String name;
        private int age;
        public void save() {
            System.out.println(name+","+age);
        }
    
        public UserDaoImpl(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5.BookService接口

    package com.study.service;
    
    public interface BookService {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6.BookServiceImpl实现类

    package com.study.service.impl;
    
    import com.study.dao.BookDao;
    import com.study.dao.UserDao;
    import com.study.dao.impl.BookDaoImpl;
    import com.study.dao.impl.UserDaoImpl;
    import com.study.service.BookService;
    
    public class BookServiceImpl implements BookService {
        //简单类型
        private BookDao bookDao;
        private UserDao userDao;
    
    
    
        public void save() {
            bookDao.save();
            userDao.save();
            System.out.println("BookServiceImpl...");
        }
    
        public BookServiceImpl(BookDao bookDao, UserDao userDao) {
            this.bookDao = bookDao;
            this.userDao = userDao;
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    7.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">
        <bean id="bookDao" class="com.study.dao.impl.BookDaoImpl"></bean>
        <bean id="UserDao" class="com.study.dao.impl.UserDaoImpl">
            <!--第一种方式:直接通过参数名来设置   -->
            <constructor-arg name="name" value="小马哥"/>
            <constructor-arg name="age" value="45"/>
    
    
            <!--第二种方式:下标赋值  -->
           <!-- <constructor-arg index="0" value="小马哥"/>
            <constructor-arg index="1" value="45"/>-->
        </bean>
        <bean id="bookService" class="com.study.service.impl.BookServiceImpl">
            <!--name是形参的值-->
            <constructor-arg name="bookDao" ref="bookDao"></constructor-arg>
            <constructor-arg name="userDao" ref="UserDao"></constructor-arg>
           
        </bean>
    
    
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    8.Test测试类

    import com.study.dao.BookDao;
    import com.study.service.BookService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Test {
        public static void main(String[] args) {
            ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
            BookService service = app.getBean(BookService.class);
            service.save();
        }
    }
    /*
    BookDaoImpl...
    小马哥,45
    BookServiceImpl...
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    三、依赖注入方式选择

    在这里插入图片描述

  • 相关阅读:
    SpringBoot集成腾讯云云点播服务/视频上传
    【408考研】数据结构 —— 栈和队列的应用
    机器学习实战——训练模型
    【Linux】翻山越岭——进程地址空间
    分享一下开发回收废品小程序的步骤
    高中生可发表论文的学术期刊涵盖TCR历史期刊
    C语言基础知识
    DevExpress WinForms是一款全球顶级的用户界面控件套包
    解决 /bin/bash^M: bad interpreter: No such file or directory
    二分查找算法
  • 原文地址:https://blog.csdn.net/qq_43514330/article/details/125416080