bean的依赖注入

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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>
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
XML Java 数据格式
Spring系列(三)之Bean的生命周期以及Bean的单例与多例模式
Spring系列(三)之Bean的生命周期以及Bean的单例与多例模式
|
XML 监控 Java
注解IOC&AOP
扫描类下的注解,哪些包下的类需要使用IOC注解
95 0
|
Java 测试技术 容器
Spring框架-ObjectProvider更加宽泛的依赖注入
从上面的过程中我们可以看出,但Spring中某个Bean的依赖类型为ObjectProvider时,我们不需要提供一个ObjectProvider类型的Bean到容器中,只需要提供一个T类型的Bean到容器中,容器会自动将其包装成一个ObjectProvider,然后注入到依赖中
210 0
|
4月前
|
Java Spring
Spring的Bean生命周期中@PostConstruct注解
【8月更文挑战第3天】在Spring框架中,`@PostConstruct`注解标示Bean初始化完成后立即执行的方法。它在依赖注入完成后调用,适用于资源加载、属性设置等初始化操作。若方法中抛出异常,可能影响Bean初始化。与之对应,`@PreDestroy`注解的方法则在Bean销毁前执行,用于资源释放。
165 0
|
7月前
|
Java Spring
Spring注解开发bean管理及依赖注入
Spring注解开发bean管理及依赖注入
67 0
|
设计模式 缓存 Java
Spring ioC源码深入剖析Bean的实例化 2
Spring ioC源码深入剖析Bean的实例化
62 1
|
XML Java 数据格式
Spring ioC源码深入剖析Bean的实例化 1
Spring ioC源码深入剖析Bean的实例化
77 0
|
XML Java 数据库连接
深入理解Spring IOC之扩展篇(二)、BeanFactoryPostProcessor和BeanPostProcessor
深入理解Spring IOC之扩展篇(二)、BeanFactoryPostProcessor和BeanPostProcessor
104 1
|
前端开发 JavaScript Java
浅谈Spring的相关概念性问题 IOC DI AOP 工厂模式 单例
浅谈Spring的相关概念性问题 IOC DI AOP 工厂模式 单例
154 0
|
容器
05 依赖注入-自动装配
用于引用类型的依赖注入
83 0

热门文章

最新文章