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

第七节:如何浅显易懂地理解Spring Boot中的依赖注入(自学Spring boot 3.x的第二天)

大家好,我是网创有方,今天我开始学习spring boot的第一天,一口气写了这么多。

这节通过一个非常浅显易懂的列子来讲解依赖注入。

在Spring Boot 3.x中,依赖注入(Dependency Injection, DI)是一个核心概念,它允许你定义和配置对象之间的依赖关系,而不需要显式地在代码中创建这些对象。这样可以使代码更加模块化、可测试和可维护。

下面是一个用浅显易懂的语言解释Spring Boot 3.x中依赖注入的例子:

角色和任务:

假设你有一个“学生”(Student)类和一个“教师”(Teacher)类。老师负责教学生,学生负责学习

  • 学生Student):学习。
  • 教师Teacher):用来教学生学习。

手动方式(不推荐)

public class Teacher {//教学方法public void teaching(){Student student = new Student();student.learning();;}
}

自动注入(推荐)

第一步:声明一个Teacher类

通过@Autowired注入Student对象

Teacher.java

@Component
public class Teacher {@Autowiredprivate Student student;//教学方法public void teaching(){student.learning();;}
}

第二步:声明一个Student类

Student.java代码如下:


@Component("student")
public class Student {@Value("小明")String  name;//姓名@Value("18")int age;//年龄public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//学习方法public void learning(){System.out.println("我正在学习");}}

第三步:在Controller类中调用测试效果

通过调用teacher.teaching()方法测试下效果。

@SpringBootApplication
public class WcaiApplication {@Autowiredprivate  Teacher teacher;public static void main(String[] args) {SpringApplication.run(WcaiApplication.class, args);
//        var ctx = new AnnotationConfigApplicationContext(AppConfig.class);
//        var student = ctx.getBean(Student.class);
//        System.out.println(student.getName());
//        System.out.println(student.getAge());}@Controllerpublic  class HelloController {@GetMapping("/test")public String test() {teacher.teaching();return "index";}}}

 测试打印效果如下:

http://www.lryc.cn/news/386344.html

相关文章:

  • Postman自动化测试实战:使用脚本提升测试效率
  • CSMA/CA并不是“公平”的
  • 【漏洞复现】I doc view——任意文件读取
  • 图数据库 vs 向量数据库
  • 企业品牌出海第一站 维基百科词条创建
  • Windows下activemq集群配置(broker-network)
  • 心理辅导平台系统
  • 代理IP对SEO影响分析:提升网站排名的关键策略
  • 【leetcode--三数之和】
  • 解决Java中的ClassCastException问题
  • 【TensorFlow深度学习】混合生成模型:结合AR与AE的创新尝试
  • Spring:Spring中分布式事务解决方案
  • 音视频开发32 FFmpeg 编码- 视频编码 h264 参数相关
  • 标准版小程序订单中心path审核不通过处理教程
  • 移植对话框MFC
  • 【开源的字典项目】【macOS】:在macOS上能打开mdd and mdx 的github开源项目
  • 已解决javax.security.auth.login.LoginException:登录失败的正确解决方法,亲测有效!!!
  • 2741. 特别的排列 Medium
  • 读AI新生:破解人机共存密码笔记15辅助博弈
  • C++ 因项目需求,需要将0~2的32次方这个区间的数字保存到内存当中(内存大小为4G),并且可以实现对任意一个数字的增删。(先叙述设计思路,再写岀代码)
  • Linux 下的性能监控与分析技巧
  • 不可复制网站上的文字——2种方法
  • Ubuntu 22.04上编译安装c++ spdlog library
  • ESP32代码开发入门
  • “势”是“态”的偶然性减少
  • 人脑计算机技术与Neuroplatform:未来计算的革命性进展
  • 新版周易测算系统源码 去授权完美运行
  • 【PYTHON】力扣刷题笔记 -- 0053. 最大子数组和【中等】
  • Linux启动elasticsearch,提示权限不够
  • css 布局出现无法去除的空白