bean的依赖注入

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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
相关文章
|
6月前
|
XML Java 数据格式
④【Spring】IOC - 基于注解方式 管理bean
④【Spring】IOC - 基于注解方式 管理bean
71 0
|
XML 监控 Java
注解IOC&AOP
扫描类下的注解,哪些包下的类需要使用IOC注解
89 0
|
6月前
|
Java Spring
Spring注解开发bean管理及依赖注入
Spring注解开发bean管理及依赖注入
63 0
|
XML Java 数据格式
Spring依赖注入、对象装配
在这篇博客中,我们学习到了spring依赖注入的三种常见的方式,并且了解了它们的优缺点,还了解了依赖注入的两个重要的关键字:@Autowired、@Resource,并了解了两者的区别。还知道了如何解决同一类型Bean注入的报错问题和了解了软件设计中的单一设计原则。
143 0
|
XML 设计模式 Java
Spring——Bean管理-注解方式进行属性注入
简化xml方式开发,只需要注解就可以完成在配置文件中的配置
|
6月前
|
XML Java 数据格式
Spring 管理 Bean-IOC--基于注解配置 bean
Spring 管理 Bean-IOC--基于注解配置 bean
75 0
|
Java Spring 容器
Spring-在IoC中装配Bean系列文章导读
Spring-在IoC中装配Bean系列文章导读
77 0
|
XML 数据格式
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
Sping5学习(五):IOC操作Bean管理 之 基于注解方式的属性注入
|
容器
05 依赖注入-自动装配
用于引用类型的依赖注入
77 0
|
XML Java 测试技术
Bean的自动装配
- 自动装配Spring满足bean依赖一种方式! - Spring会在上下文中自动寻找,并自动给Bean装配属性