• Spring-依赖注入DI


    前言

    在这里插入图片描述

    setter注入

    引用类型

    在这里插入图片描述
    通过一个案例回顾setter注入引用类型·

    Step1:添加User

    在原先Blog的基础上添加。
    整体目录结构如下图所示
    在这里插入图片描述
    UserDaoImpl.java

    public class UserDaoImpl implements UserDao {
        public void save() {
            System.out.println("user dao save ...");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Step2:修改BookServiceImpl

    BookServiceImpl.java

    
    public class BookServiceImpl implements BookService {
    
        private  BookDao bookDao;
        private UserDao userDao;
        public void save(){
            System.out.println("book service save .....");
            bookDao.save();
            userDao.save();
        }
        //提供对应的set方法
        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

    Step3:修改配置

    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-->
        <bean id="userDao" class="com.itheima.dao.Impl.UserDaoImpl"/>
        <bean id="bookDao" class="com.itheima.dao.Impl.BookDaoImpl"/>
        <bean id="bookService" class="com.itheima.service.Impl.BookServiceImpl">
    <!--        配置server与dao的关系-->
    <!--        property标签表示配置当前bean的属性-->
    <!--        name属性表示配置哪一个具体的属性-->
    <!--        ref属性表示参照哪一个bean-->
            <property name="bookDao" ref="bookDao"/>
            <property name="userDao" ref="userDao"/>
        </bean>
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    Step4:run APP2.java

    public class APP2 {
        public static void main(String[] args) {
            //获取IoC容器
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取Bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
            BookService bookService=(BookService) ctx.getBean("bookService");
            bookService.save();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    简单类型

    .在这里插入图片描述

    Step1:定义BookDaoImpl.java

    BookDaoImpl.java

    public class BookDaoImpl implements BookDao {
        private  int connectionNum;
        private String databaseName;
        public void save(){
            System.out.println("book dao save ....."+databaseName+'.'+connectionNum);
        }
        //提供对应的set方法
        public void setconnectionNum(int connectionNum){
            this.connectionNum=connectionNum;
        }
        public void setdatabaseName(String databaseName){
            this.databaseName=databaseName;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Step2:修改配置

    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-->
        <bean id="bookDao" class="com.itheima.dao.Impl.BookDaoImpl">
            <property name="connectionNum" value="10"/>
            <property name="databaseName" value="mysql"/>
        </bean>
    
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Step3:run 一下

    APP2.java

    public class APP2 {
        public static void main(String[] args) {
            //获取IoC容器
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取Bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
            BookService bookService=(BookService) ctx.getBean("bookService");
            bookService.save();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    构造器注入

    引用类型

    在这里插入图片描述

    简单类型

    小Demo

    BookDaoImpl.java

    public class BookDaoImpl implements BookDao {
        private  int connectionNum;
        private String databaseName;
        public BookDaoImpl(int connectionNum,String databaseName){
            this.connectionNum=connectionNum;
            this.databaseName=databaseName;
        }
        public void save(){
            System.out.println("book dao save ....."+databaseName+'.'+connectionNum);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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.itheima.dao.Impl.BookDaoImpl">
            <constructor-arg name="connectionNum" value="10"/>
            <constructor-arg name="databaseName" value="mysql"/>
        </bean>
    
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    参数适配

    在这里插入图片描述

    依赖自动装配

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Kubernetes Kubelet 线程泄漏
    LLC 三相移相PWM产生原理分析
    HTML(28)——空间转换
    SSM+Mysql实现的共享单车管理系统(功能包含分角色,登录、用户管理、服务点管理、单车管理、分类管理、学生信息管理、单车租赁、信息统计、系统设置等)
    对Transformer中的MASK理解
    姿态分析开源工具箱MMPose使用示例:2d手势估计
    设计模式学习(二):单例模式
    【核心概念】图像分类和目标检测中的正负样本划分以及架构理解
    负载均衡反向代理下的webshell上传
    宣泰医药通过注册:拟募资6亿 联和投资是大股东
  • 原文地址:https://blog.csdn.net/weixin_42888638/article/details/125468068