• 初识Spring框架~控制反转IoC、依赖注入DI以及Spring项目的创建方式


    目录

    Spring框架初识

    Spring IoC

    IoC(控制反转)

    DI(依赖注入)

    Spring项目的创建

    创建一个maven项目

    配置XML文件 

    添加启动类 

    简单了解Bean对象的存储与获取 

    创建一个Spring IoC容器

    注册Bean对象

    获取并使用Bean对象 


    Spring框架初识

    通常所说的Spring是指Spring Framework(Spring框架),它是一个开源的框架,目前企业中开发JAVA项目,Spring框架几乎是标配,这个框架中包含了很多组件:Spring容器/IOC容器、SpringMVC、SpringAOP。Spring可以说是包含了众多工具方法的IOC容器

    Spring IoC

    上面说到是一个IoC容器,其具备两个最基础的功能:将对象存储到容器中、从容器中取出对象。因此,在学习Spring时,主要就是学会如何将对象存储到Spring中,再从Spring中获取对象的过程。

    对于Spring IoC容器来说,是管理Bean对象的容器.单纯从存放数据这个角度来看,Spring IoC容器与普通的集合框架一样,但使用Spring容器存放对象,对象不需要程序员手动去new,需要进行管理的对象,直接放入到容器中。

    · Bean对象即普通的java实例对象

    IoC(控制反转)

    IoC即控制反转,是面向对象编程中的一种设计原则。对于Spring容器来说,IoC将实例化对象以及组织间的依赖关系,都转交给IoC容器来进行管理。控制权由程序员自己控制,转变为IoC容器控制,控制权发生反转,因此称为IoC容器。

    使用IoC容器,按照框架约定的写法,就可以实现,框架统一管理Bean'对象的生命周期、Bean对象之间的依赖关系。

    DI(依赖注入)

    DI,即依赖注入,也就是由IoC容器在运行时动态的将某种依赖关系注入到对象之中。

    依赖注入和控制反转其实是从不同的角度描述同一件事,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象之间的解耦.也可以说IoC是是思想,而DI是其具体的实现。

    Spring项目的创建

    创建一个maven项目

    配置XML文件 

    关于pom.xml文件的配置可以直接从我的gitee中复制:Spirng项目pom.xml文件的配置

    添加启动类 

    1. package org.example;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. @SpringBootApplication
    5. public class Application {
    6. public static void main(String[] args) {
    7. SpringApplication.run(Application.class, args);
    8. }
    9. }

     

    简单了解Bean对象的存储与获取 

    创建一个Spring IoC容器

    1. package org.example;
    2. import org.springframework.context.ApplicationContext;
    3. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    4. public class APP {
    5. public static void main(String[] args) {
    6. //ApplicationContext是Spring容器的顶级接口
    7. //AnnotationConfigApplicationContext其中的一个实现类,作用是:
    8. //(1)扫描指定的包路径下,使用了Spring框架注解的类
    9. //(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
    10. ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
    11. }
    12. }

    注册Bean对象

    使用类注解的方式来注册Bean对象

     

    1. package org.example.model;
    2. import org.springframework.context.annotation.Configuration;
    3. import org.springframework.stereotype.Component;
    4. import org.springframework.stereotype.Controller;
    5. import org.springframework.stereotype.Repository;
    6. import org.springframework.stereotype.Service;
    7. //以下四个注解,都是类注解,用于注册Bean对象
    8. //注册的方式,默认是Bean ID(名称),是类名首字母小写
    9. @Controller
    10. //@Service
    11. //@Repository
    12. //@Component
    13. public class Bean {
    14. public void sayHello() {
    15. System.out.println("hello");
    16. }
    17. }

    获取并使用Bean对象 

    获取Bean对象有两种方式

    ①通过Bean的类型来获取

    1. // (1)通过bean的类型来获取
    2. Bean b1_1 = context.getBean(Bean.class);
    3. System.out.println(b1_1);

    ②通过Bean的id(名称)来获取

    1. //(2)通过bean的id(也叫bean的名称)
    2. Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
    3. System.out.println(b1_2);

    使用Bean 

    上面已经获取到了bean对象,之后就可以直接使用

    1. //使用bean
    2. b1_1.sayHello();
    3. b1_2.sayHello();

    完整代码 

    1. package org.example;
    2. import org.example.model.Bean;
    3. import org.springframework.context.ApplicationContext;
    4. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    5. public class APP {
    6. public static void main(String[] args) {
    7. //ApplicationContext是Spring容器的顶级接口
    8. //AnnotationConfigApplicationContext其中的一个实现类,作用是:
    9. //(1)扫描指定的包路径下,使用了Spring框架注解的类
    10. //(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
    11. ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
    12. //获取Bean对象有两种方式:
    13. // (1)通过bean的类型来获取
    14. Bean b1_1 = context.getBean(Bean.class);
    15. //(2)通过bean的id(也叫bean的名称)
    16. Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
    17. //使用bean
    18. b1_1.sayHello();
    19. b1_2.sayHello();
    20. }
    21. }

     

     

     

  • 相关阅读:
    Jmeter接口自动化生成测试报告html格式
    【重识云原生】第六章容器6.3.4节——etcd组件
    【周周Python百日刷题计划】Day5~内置函数和运算符的使用
    pandas入门 数据结构
    前端框架,vue3的理解
    关于binwalk->sasquatch插件安装错误的缓解方案
    2023年中秋·国庆节放假通知
    管理git项目
    Docker镜像仓库:存储与分发Docker镜像的中央仓库
    DDOS原理以及解决方案!
  • 原文地址:https://blog.csdn.net/qq_58284486/article/details/127955073