• 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

    参数适配

    在这里插入图片描述

    依赖自动装配

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

  • 相关阅读:
    mysql 添加limit,sql 语句执行时间变长的问题
    Rust入门-引用借用
    名创拟7月13日上市:最高发行价22.1港元 单季净利下降19%
    java毕业设计演唱会门票订售及管理系统Mybatis+系统+数据库+调试部署
    MySQL性能优化(硬件,系统配置,表结构,SQL语句)
    VoLTE端到端业务详解 | 空口主要特性功能
    关于对象数组的一些方法总结
    【算法|双指针系列No.3】leetcode202. 快乐数
    【计算机视觉 | 目标检测】术语理解5:Split Shuffle Block、Group Shuffle Block 和复杂非结构化室内场景
    ChatGPT自媒体创作秘籍:高效生成优质文章和视频
  • 原文地址:https://blog.csdn.net/weixin_42888638/article/details/125468068