第七节:如何浅显易懂地理解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 {
    @Autowired
    private 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 {

    @Autowired
    private  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());

    }
    @Controller
    public  class HelloController {
        @GetMapping("/test")
        public String test() {
            teacher.teaching();
            return "index";
        }
    }


}

测试打印效果如下:

相关推荐
一只乔哇噻5 分钟前
java后端工程师进修ing(研一版 || day41)
java·开发语言·学习·算法
正在走向自律6 分钟前
国产时序数据库选型指南-从大数据视角看透的价值
大数据·数据库·清华大学·时序数据库·iotdb·国产数据库
愿时间能学会宽恕6 分钟前
SpringBoot后端开发常用工具详细介绍——SpringSecurity认证用户保证安全
spring boot·后端·安全
Pocker_Spades_A7 分钟前
Python快速入门专业版(十五):数据类型实战:用户信息录入程序(整合变量、输入与类型转换)
数据库·python
禁默21 分钟前
已知 inode 号,如何操作文件?Ext 文件系统增删查改底层逻辑拆解
linux·服务器·数据库
User_芊芊君子23 分钟前
【Java】设计模式——单例、工厂、代理模式
java·设计模式·代理模式
云飞云共享云桌面28 分钟前
工厂办公环境如何实现一台服务器多人共享办公
运维·服务器·网络·数据库·3d
weixin_4569042732 分钟前
MySQL高级特性详解
数据库·mysql
2301_8035545232 分钟前
正向代理,反向代理,负载均衡还有nginx
java·nginx·负载均衡
要开心吖ZSH33 分钟前
软件设计师备考-(十六)数据结构及算法应用(重要)
java·数据结构·算法·软考·软件设计师