bean的依赖注入

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: bean的依赖注入

使用构造函数


简单类型

public class BookDaoImpl implements BookDao {
    private int connectionNum;
    private String databaseName;
    public BookDaoImpl() {
    }
    public BookDaoImpl(int connectionNum, String databaseName) {
        this.connectionNum = connectionNum;
        this.databaseName = databaseName;
    }
    @Override
    public void save() {
        System.out.println("BookDao is save..." +connectionNum + databaseName);
    }
}


<!--    标准书写-->
    <bean id="bookDao" class="com.lihuikang.springboot_03.dao.Impl.BookDaoImpl">
        <constructor-arg name="databaseName" value="mysql"></constructor-arg>
        <constructor-arg name="connectionNum" value="8888"></constructor-arg>
    </bean>


引用类型


public class BookServiceImpl implements BookService {
    private BookDao bookDao;
    public BookServiceImpl() {
    }
    public BookServiceImpl(BookDao bookDao) {
        this.bookDao = bookDao;
    }
    @Override
    public void save() {
        System.out.println("BookDaoService。。。");
        bookDao.save();
    }
}


<bean id="bookService" class="com.lihuikang.springboot_03.service.Impl.BookServiceImpl">
<!--        name是构造放方法中的形式参数-->
        <constructor-arg name="bookDao" ref="bookDao"></constructor-arg>
    </bean>


使用set方法


简单类型


public class BookDaoImpl implements BookDao {
    private int connectionNum;
    private String databaseName;
    public int getConnectionNum() {
        return connectionNum;
    }
    public void setConnectionNum(int connectionNum) {
        this.connectionNum = connectionNum;
    }
    public String getDatabaseName() {
        return databaseName;
    }
    public void setDatabaseName(String databaseName) {
        this.databaseName = databaseName;
    }
}


简单类型使用的是value属性


<!--    在ioc容器中添加bean-->
    <bean id="bookDao" class="com.lihuikang.springboot_02.dao.impl.BookDaoImpl" >
        <property name="databaseName" value="mysql"></property>
        <property name="connectionNum" value="10"></property>
    </bean>


引用类型

public class BookServiceImpl implements BookService {
//    删除new对象
//    private BookDao bookDao = new BookDaoImpl();
    private BookDao bookDao;
// 提供set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}


<!--    在ioc容器中添加bean-->
    <bean id="bookDao" class="com.lihuikang.springboot_02.dao.impl.BookDaoImpl" >
        <property name="databaseName" value="mysql"></property>
        <property name="connectionNum" value="10"></property>
    </bean>


<bean id="bookService" class="com.lihuikang.springboot_02.service.impl.BookServiceImpl">
<!--        配置service和dao的关系-->
<!--        name表示配置哪一个具体的bean,ref表示参照哪一个bean-->
        <property name="bookDao" ref="bookDao"></property>
    </bean>


App类


public class App {
    public static void main(String[] args) {
//        初始化容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//        获取bean
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
        bookDao.save();
        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();
    }
}


自动装配



引用类型


<!--    在ioc容器中添加bean-->
    <bean id="bookDao" class="com.lihuikang.springboot_04.dao.impl.BookDaoImpl" >
        <property name="databaseName" value="mysql"></property>
        <property name="connectionNum" value="10"></property>
    </bean>
    <bean id="bookService" class="com.lihuikang.springboot_04.service.impl.BookServiceImpl" autowire="byType">
    </bean>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
XML Java 数据格式
Spring之bean单例与多例
Spring之bean单例与多例
102 0
|
9月前
|
XML Java 数据格式
Spring系列(三)之Bean的生命周期以及Bean的单例与多例模式
Spring系列(三)之Bean的生命周期以及Bean的单例与多例模式
|
9月前
|
Java 测试技术 容器
Spring框架-ObjectProvider更加宽泛的依赖注入
从上面的过程中我们可以看出,但Spring中某个Bean的依赖类型为ObjectProvider时,我们不需要提供一个ObjectProvider类型的Bean到容器中,只需要提供一个T类型的Bean到容器中,容器会自动将其包装成一个ObjectProvider,然后注入到依赖中
113 0
|
11月前
|
XML Java 数据格式
Spring依赖注入、对象装配
在这篇博客中,我们学习到了spring依赖注入的三种常见的方式,并且了解了它们的优缺点,还了解了依赖注入的两个重要的关键字:@Autowired、@Resource,并了解了两者的区别。还知道了如何解决同一类型Bean注入的报错问题和了解了软件设计中的单一设计原则。
106 0
|
12月前
|
XML 设计模式 Java
Spring——Bean管理-注解方式进行属性注入
简化xml方式开发,只需要注解就可以完成在配置文件中的配置
|
7月前
|
设计模式 安全 Java
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况
大家好,我是三友~~ 今天来讲的一个你可能不曾注意的小东西,那就是Spring依赖注入支持注入Bean的类型,这个小东西可能看似没有用但是实际又有点小用。
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况
|
Java Spring 容器
Spring-在IoC中装配Bean系列文章导读
Spring-在IoC中装配Bean系列文章导读
54 0
|
容器
05 依赖注入-自动装配
用于引用类型的依赖注入
58 0
|
Java Maven
SpringFrame-ioc 依赖注入
SpringFrame-ioc 依赖注入
|
XML 数据格式
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入