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

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>

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

   @Testpublic 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.lryc.cn/news/510351.html

相关文章:

  • 监听器listener
  • 重温设计模式--10、单例模式
  • Flutter动画学习二
  • 讯飞语音听写WebApi(流式)【React Native版】
  • 【Linux编程】一个基于 C++ 的 TCP 客户端异步(epoll)框架(一))
  • PG备份恢复--pg_dump
  • pikachu靶场搭建详细步骤
  • HarmonyOS NEXT开发进阶(五):装饰器讲解
  • 【编译原理】往年题汇总(山东大学软件学院用)
  • 【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)
  • 设计模式-创建型-单例模式
  • VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
  • 【2024最新】基于Python+Mysql+django的水果销售系统Lw+PPT
  • 一种寻路的应用
  • 编译openssl遇到错误Parse errors: No plan found in TAP output的解决方法
  • 一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景
  • Windows开启IIS后依然出现http error 503.the service is unavailable
  • C++的封装(十四):《设计模式》这本书
  • 牛客周赛73B:JAVA
  • 【Ubuntu 20.4安装截图软件 flameshot 】
  • 剑指Offer|LCR 014. 字符串的排列
  • 【Agent】Chatbot、Copilot与Agent如何帮助我们的提升效率?
  • QT笔记- QTreeView + QFileSystemModel 当前位置的保存与恢复 #选中 #保存当前索引
  • OpenResty开发环境搭建
  • linux提示结构需要清理
  • 【扩展卡尔曼滤波理论推导与实践】【理论】【2/3 公式推导】
  • springboot494基于java的综合小区管理系统(论文+源码)_kaic
  • 深度学习blog-Transformer-注意力机制和编码器解码器
  • 敏感词 v0.24.0 新特性支持标签分类,内置实现多种策略
  • 随身 WiFi 连接 X-Wrt 共享网络与 IPv6 中继配置