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

Spring环境搭建、SpringIOC容器基础、SpringDI基础

文章目录

  • Spring环境搭建、SpringIOC容器基础、SpringDI基础
    • 一、SpringIOC核心思想
    • 二、搭建Spring环境步骤
    • 三、SpringIOC容器使用步骤
    • 四、SpringIOC 总结
    • 五、SpringDI(依赖注入)
    • 1、基本概念
      • 2、实现方式
        • (1)set 注入
        • (2)构造注入
        • (3)属性注入
      • 3、允许注入的数据类型
      • 4、注入的实现方式

Spring环境搭建、SpringIOC容器基础、SpringDI基础

一、SpringIOC核心思想

  • IOC控制反转
  • DI依赖注入

作用:将所有JavaBean注入Spring容器中,进行==”解耦“==管理,在Spring中,万物皆为JavaBean

二、搭建Spring环境步骤

  1. 使用maven,在pom.xml文件中添加Spring坐标,即添加Spring依赖
  2. 在resource文件中新建配置文件,即Spring框架的主配置文件
  3. Spring的主配置文件就相当于 SpringIOC 容器 ,其中管理这所有的 JavaBean

三、SpringIOC容器使用步骤

  1. 创建 JavaBean ,即类或其他数据
  2. 将类注入SpringIOC容器,即将创建的 JavaBean 设置到IOC容器中
// 配置语法:<bean id="唯一标识" class="类的完全限定名称,就是需要将哪个类加到IOC容器中"></bean>

3、加载 Spring 主配置文件(SpringIOC容器)获取核心对象

 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");ApplicationContext applicationContext = new FileSystemXmlApplicationContext()ApplicationContext applicationContext = new AnnotationConfigApplicationContext()

说明:

关键字:
BeanFactory(父接口)

ApplicationContext(子接口)

  • ClassPathXmlApplicationContext == 通过文件的相对路径获取核心对象(实现类)
  • FileSystemXmlApplicationContext == 通过文件的绝对路径获取核心对象(实现类)
  • AnnotationConfigApplicationContext == 通过加载配置类获取核心对象(实现类)

4、让 Spring 以解耦的方式实例化对象并返回用户

四、SpringIOC 总结

  • 使用 SpringIOC 的主要思想就是为了解耦合,就是管理项目组件之间的耦合关系
  • IOC 的含义就是控制反转,即将创建对象的控制权转移给 Spring框架进行管理,反转的含义就是,原本创建对象的权利应该是属于具体的类,而现在创建对象的权利交给了IOC容器

五、SpringDI(依赖注入)

1、基本概念

根本目的也是为了解耦合

就是通过依赖注入,将传递的值或对象,通过 SpringDI 注入到指定位置

2、实现方式

先思考需要使用哪种注入方式更加合适

(1)set 注入

通过 set 方法维护对象之间的依赖关系

在 bean 标签内部开始配置

  1. 配置位置:此位置

  2. 配置语法:使用****标签

  3. 配置属性:

    • name -------->属性名称 (set 方法中对应的参数名称)

    • value -------->属性值

    • ref -------->属性值的引用(也就是需要关联的哪个对象

<bean id="student" class="com.apesource.pojo.Student"><property name="stuname" value="111"></property><property name="stuage" value="12"></property><property name="stuhobby" value="money"></property>
</bean>

(2)构造注入

通过构造方法维护对象之间的依赖关系

  1. 配置位置:此位置

  2. 配置语法:<constructor-arg 属性名=“属性值”>

  3. 配置属性:

    • name-------->构造方法参数名称

    • index-------->构造方法参数下标

    • type-------->构造方法参数类型

    • value-------->属性值

    • ref-------->属性值的引用(也就是需要关联的哪个对象

<bean id="student" class="com.apesource.pojo.Student"><constructor-arg name="name" value="111"></constructor-arg><constructor-arg name="age" value="21"></constructor-arg>
</bean>

(3)属性注入

(不推荐使用)

3、允许注入的数据类型

  • 注入对象
  • 注入基本数据类型以及String
  • 注入复杂类型List Set array Map propertoes

4、注入的实现方式

  • 下面用set注入演示复杂类型的注入
<!--  =============================注入复杂类型=====================================  -->
<bean id="teacher" class="com.apesource.pojo.Teacher"><property name="mylist"><list><value>11</value><value>22</value><value>33</value></list></property><property name="myset"><set><value>444</value><value>555</value><value>666</value></set></property><property name="mymap"><map><entry key="花和尚" value="鲁智深"></entry><entry key="豹子头" value="林冲"></entry><entry key="两年半" value="蔡徐坤"></entry><entry key="玉麒麟" value="卢俊义"></entry><entry key="及时雨" value="宋江"></entry></map></property><property name="myarray"><array><value>777</value><value>888</value><value>999</value></array></property><property name="prop"><props><prop key="1+1">2</prop><prop key="2+2">4</prop><prop key="4+4">8</prop></props></property></bean>

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

相关文章:

  • CentOS7.9手工配置静态网络流程
  • JVM面试题-1
  • 漫谈红黑树:红黑树的奇妙演化
  • docker启动rabbitmq,但是页面加载不出来问题解决
  • Qt项目报错:Cannot run compiler ‘clang++‘. /bin/sh: 1: clang++: not found
  • 奇舞周刊第503期:图解串一串 webpack 的历史和核心功能
  • 6.redis面试题和坑
  • 【ES6】—使用 const 声明
  • iOS开发 - Swift Codable协议实战:快速、简单、高效地完成JSON和Model转换!
  • RabbitMq:Topic exchange(主题交换机)的理解和使用
  • 汽车级36V、4A同步降压转换器MAX20404AFOD/VY、MAX20404AFOC/VY、MAX20404AFOA/VY开关稳压器
  • C++------利用C++实现二叉搜索树【数据结构】
  • HotSpot虚拟机之内存模型与线程安全
  • TiDB 多集群告警监控-中章-融合多集群 Grafana
  • 【图像分类】基于卷积神经网络和主动学习的高光谱图像分类(Matlab代码实现)
  • notepad++ verilog关键字自动补全
  • C语言知识
  • 数据结构基础
  • 深度学习中数据处理相关的技巧
  • wkhtmltopdf 与 .Net Core
  • Linux Mint 21.3 计划于 2023 年圣诞节发布
  • 腾讯云3年轻量应用服务器2核4G5M和2核2G4M详细介绍
  • rabbitmq中的消息确认
  • jenkins一键部署github项目
  • 岩土工程安全监测隧道中使用振弦采集仪注意要点?
  • 第四章nginx组件精讲
  • LlamaGPT -基于Llama 2的自托管类chatgpt聊天机器人
  • 常见的跨域解决方案
  • 分布式websocket解决方案
  • 奥威BI财务数据分析方案:借BI之利,成就智能财务分析