当前位置: 首页 > article >正文

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。

目录

一、根据名字进行自动装配--byName

二、根据类型进行自动装配 byType


本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。

一、根据名字进行自动装配--byName

UserService 类中调用了UserDao 类中的delete()方法

public class UserService {

    UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void delete(){
        userDao.delete();
    }
}
public class UserDao {

    public void delete(){
        System.out.print("删除用户信息");
    }
}

配置如下:

给需要注入对象的bean加上autowire="byName"

注意一:根据名字进行自动装配也是基于set注入方式实现的,所以需要写set方法。set注入一定要有无参构造方法。

注意二:根据名字进行自动装配的时候,被注入的对象的bean的id不能随便写。

必须是set方法的方法名去掉set,剩下的单词首字母变小写

<?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,就在哪个类进行自动装配-->
    <!--根据名字进行自动装配,注意:自动装配也是基于set注入方式实现的-->
    <bean id="UserServiceBean" class="com.linctSpring6.service.UserService" autowire="byName"></bean>

    <!--id一般也叫做bean的名称-->
    <!--根据名字进行自动装配的时候,被注入的对象的bean的id不能随便写-->
    <!--必须是set方法的方法名去掉set,剩下的单词首字母变小写-->
    <bean id="userDao" class="com.linctSpring6.dao.UserDao"></bean>

</beans>

我们写一个测试类来测试这个方法

   @Test
    public void testUserServiceByName(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("set-bean-autowire.xml");
        UserService userService = applicationContext.getBean("UserServiceBean", UserService.class);
        userService.delete();
    }

可以看到,根据名字自动装配bean成功

二、根据类型进行自动装配 byType

UserService 类中调用了UserDao 类中的delete()方法和StudentDao类中creat()方法

public class UserService {

    UserDao userDao;

    StudentDao studentDao;


    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void setStudentDao(StudentDao studentDao) {
        this.studentDao = studentDao;
    }

    public void userServicemethod(){
        userDao.delete();
        studentDao.creat();
    }

}
public class UserDao {

    public void delete(){
        System.out.println("删除用户信息");
    }
}
public class StudentDao {

    public void creat(){
        System.out.println("创建学生信息");
    }
}

配置如下:

根据类型进行自动装配 byType也是通过set方法来注入的。

byType方法的使用非常简单,给需要注入对象的bean加上autowire="byType",spring就会自动根据类型帮我们的对象注入对应的bean,非常强大。

 <!--根据类型进行自动装配-->
    <bean id="UserServiceBean" class="com.linctSpring6.service.UserService" autowire="byType"></bean>
    <bean id="userDao" class="com.linctSpring6.dao.UserDao"></bean>
    <bean id="studentDao" class="com.linctSpring6.dao.StudentDao"></bean>

 可以看到,根据类型自动装配bean成功

注意点:如果同一个配置文件中写注入了2个相同的baen,则会报错

所以根据类型进行自动装配,某一类型的实例只能有一个。

报错如下:

以上就是我对bean的自动装配(自动化注入)的理解啦,希望能帮到大家,有问题的地方欢迎大家一起讨论!

后续会不断更新作品,欢迎大家一起讨论学习。❤❤❤


http://www.kler.cn/a/454029.html

相关文章:

  • 【乐企文件生成工程】根据特定要素动态选择需要生成的发票板式文件实现
  • 如何增加多行内容到文件
  • 爬虫代理服务要怎么挑选?
  • C++的封装(十四):《设计模式》这本书
  • Edge Scdn是用来干什么的?
  • 微信小程序中遇到过的问题
  • mybatis/mybatisplus
  • 《异构计算:多元算力聚变,点燃高性能计算新引擎 – CPU、GPU与FPGA算力融合》
  • Java - 日志体系_Apache Commons Logging(JCL)日志接口库
  • 基于Java2D和Java3D实现的(GUI)图形编辑系统
  • Android笔记(四十一):TabLayout内的tab不滚动问题
  • SpringCloud整合skywalking实现链路追踪和日志采集
  • C++ Map与Set:数据的吟游诗——双城记
  • MySql详细教程-从入门到进阶(超实用)
  • 【Vue】前端使用node.js对数据库直接进行CRUD操作
  • 21、电科院FTU检测标准学习笔记-电磁兼容
  • pycharmGateway远程开发0.5GB of free space is necessary to run the IDE
  • postgresql安装部署(linux)
  • 一文理解机器学习中二分类任务的评价指标 AUPRC 和 AUROC
  • 单机游戏《野狗子》游戏运行时提示dbghelp.dll缺失是什么原因?dbghelp.dll缺失要怎么解决?
  • 0基础跟德姆(dom)一起学AI 自然语言处理05-文本特征处理
  • Github——网页版上传文件夹
  • 最新版本 - 二进制安装k8s1.29.2 集群
  • Python 图片压缩工具
  • 初始JavaEE篇 —— 网络原理---传输层协议:深入理解UDP/TCP
  • 【踩坑/Linux】Vmware中的Ubuntu虚拟机无法访问互联网