bean的依赖注入

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 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
|
12月前
|
XML 设计模式 Java
Spring——Bean管理-注解方式进行属性注入
简化xml方式开发,只需要注解就可以完成在配置文件中的配置
|
2月前
|
XML Java 数据格式
Spring 管理 Bean-IOC--基于注解配置 bean
Spring 管理 Bean-IOC--基于注解配置 bean
60 0
|
Java Spring 容器
Spring-在IoC中装配Bean系列文章导读
Spring-在IoC中装配Bean系列文章导读
54 0
|
容器
05 依赖注入-自动装配
用于引用类型的依赖注入
58 0
|
XML 数据格式
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
|
XML Java 测试技术
Bean的自动装配
- 自动装配Spring满足bean依赖一种方式! - Spring会在上下文中自动寻找,并自动给Bean装配属性
依赖注入的注解
依赖注入的注解——简单类型(8种基本类型+string)以及引用类型
Spring(06)——单例注入多例之ApplicationContext
6 单例注入多例之注入ApplicationContext Spring bean容器中的bean有单例bean,也有多例bean。当我们需要给一个单例beanA注入一个单例beanB,或者给一个多例beanA注入一个多例或单例beanB时,都可以通过配置让Spring的bean容器帮我们完成。
1332 0
|
XML 监控 Java
Spring注解IOC&AOP
Spring注解IOC&AOP
1172 0
Spring注解IOC&AOP