0306spring--复习

news2024/9/23 21:27:03

一,spring是什么
       Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架
理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架
优点:
弊端:违背了原有的技术理念:配置太过繁琐,被称为“配置地狱”

二,Spring框架由七个定义明确的模块组成

三,现代化的开发就是基于spring容器的开发,
      1.springboot :一个快速开发的脚手架
        约定大于配置
       2.springcloud:
        springCloud是基于SpringBoot实现的

四,控制反转和面向切面
IOC:(获得依赖对象的方式反转了,对象由spring来创建,管理和装配)
1.控制反转:从本质上解决了问题,使我们程序员不用再去管理对象的创建了
       系统的耦合性大大降低,可以更专注于业务的实现(IOC的原型)
1)以前:程序是需要程序员主动创建对象,控制权在开发人员手上
2)使用了set方法,程序不再具有主动性,而是变成了被动的接受对象,主动权在用户手上
3)配置:
    

<?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
                https://www.springframework.org/schema/beans/spring-beans.xsd">
    
    </beans>


    ref: 引用Spring容器中创建好的对象
        value:具体的值,基本数据类型
4)IOC创建对象的方法:
    1.默认使用无参构造创建对象
    2. 手动配置有参构造:constructor
        1)下标赋值:index
        2)通过类型创建(不建议)
        3)通过参数名:name
5)在配置文件加载的时候,容器中管理的对象就已经初始化了,(容器类似于婚介所,只有对象注册到了婚介所,当容器applicationcontext被创建,被管理的对象也就存在,也就是被初始化了)

五,spring的配置
1.别名:
    alias:----->如果添加了别名,我们也可以通过别名获取对象
2.Bean的配置:
    id:bean的唯一标识符,也就是相当于我们的对象名
    class:bean的全限定名“包名+类名”(bean对象所对应的全限定名)
    name: 也是别名:而且name比alias更高级,可以同时取多个别名(逗号或空格或分号分割)
    ref:引用Spring容器中创建好的对象
    value:具体的值,基本数据类型
3.import:
    1)这个import,一般用于团队开发,可以将多个配置文件,导入合并为一个
    2)假设项目中有多个人开发,这三个人负责不同类的开发,不同类需要注册到不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的
    张三:beans
    李四:beans2
    王五:beans3
    applicationContext.xml:
             <import resource="beans.xml"/>
            <import resource="beans2.xml"/>
            <import resource="beans3.xml"/>
    使用的时候,直接使用总的配置就好了

六,DI依赖注入
1.构造器注入:
    
2.通过set方式注入
    依赖注入:set注入
    依赖:bean对象的创建依赖于容器
    注入:bean对象中的所有属性,由容器来注入
    环境搭建:
        1.复杂类型
        2.真实测试对象

<bean id="student" class="com.kuang.pojo.Student">
        <!--第一种,普通注入-->
        <property name="name" value="小俊"/>
        <!--第二种:bean注入,ref-->
        <property name="address" ref="address"/>
        <!--第三种:,数组注入-->
        <property name="books">
            <array>
                <value>红楼梦</value>
                <value>西游记</value>
                <value>水浒传</value>
                <value>三国演义</value>
            </array>
        </property>
        <!--第四种:list-->
        <property name="hobbys">
            <list>
                <value>听歌</value>
                <value>王者</value>
                <value>跳舞</value>
            </list>
        </property>
        <!--第五种:map-->
        <property name="card">
            <map>
                <entry key="身份证" value="1234543234543234"/>
                <entry key="银行卡" value="3ueqrqyrqoyrqywqo"/>
            </map>
        </property>
        <!--第六种:set-->
        <property name="games">
            <set>
                <value>LOL</value>
                <value>COC</value>
                <value>BoB</value>
            </set>
        </property>
        <!--第七种:null-->
        <property name="wife">
            <null/>
        </property>
        <!--第八种:properties-->
        <property name="info">
            <props>
                <prop key="学号">190970070</prop>
                <prop key="性别">男</prop>
                <prop key="姓名">小俊</prop>
            </props>
        </property>
    </bean>


3.其他方式注入

注意:这两种不能直接使用,需要去导入约束,从官方文档去拿
1)p命名注入       xmlns:p="http://www.springframework.org/schema/p"
 2)c命名注入      xmlns:c="http://www.springframework.org/schema/c"
    <!--p命名空间,可以直接注入属性的值-->
    <bean id="user" class="com.kuang.pojo.User" p:name="小俊" p:age="18"/>
    <!--c命名空间,通过构造器注入:construct-args-->
    <bean id="user2" class="com.kuang.pojo.User" c:age="18" c:name="小俊俊"/>
    
            

4.bean的作用域:

 1)单例模式:singleton:
    spring 默认机制
        <bean id="user2" class="com.kuang.pojo.User" c:age="18" c:name=" 小俊俊"  scope="singleton"/>
2)原型模式:prototype:
    每次从容器中get的时候,都会产生一个新对象

3)其他的在web中才用到

七.Bean的自动装配 

自动装配是spring满足bean依赖的一种方式
spring会在上下文中自动寻找,并自动给bean装配属性
三种装配在方式:
1)在xml中显示的配置
2)在java中显示的配置
3)隐式的自动装配bean(重要)
    1.byName自动装配
    byName会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanID

<bean id="people" class="com.kuang.pojo.People" autowire="byName">
        <property name="name" value="小俊俊呀!"/>
    </bean>


    2.byType自动装配
    byName会自动在容器上下文中查找,和自己对象属性类型相同的beanID

<bean id="people" class="com.kuang.pojo.People" autowire="byType">
        <property name="name" value="小俊俊呀!"/>
    </bean>

小结:

  • byname的时候:需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法值一致
  • byname的时候:需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性的类型值一致

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows系统利用Qemu仿真ARM64平台

Windows系统利用Qemu仿真ARM64平台0 写在最前1 Windows安装Qemu1.1 下载Qemu1.2 安装Qemu1.3 添加环境变量1.4测试安装是否成功2. Qemu安装Ubuntu-Server-Arm-642.1 安装前的准备2.2 安装Ubuntu server arm 64位镜像3 Windows配置Qemu网络和传输文件3.1 参考内容3.2 Windows安装…

正版Scrivener 3 论文/小说写作工具神器软件

一款非常优秀的写作软件&#xff0c;提供了各种写作辅助功能&#xff0c;如标注多个文档、概述介绍、全屏幕编辑、快照等&#xff0c;能够轻松、便捷的辅助作者从作品构思、搜集资料、组织结构、增删修改到排版输出的整个写作流程。 作为一个专业的写作软件&#xff0c;Scriven…

spring 的invokeBeanFactoryPostProcessors()

在spring启动过程中有个10多个关键的方法其中invokeBeanFactoryPostProcessors&#xff08;&#xff09;在函数在BeanDefinition完全加载后执行&#xff0c;实现的是spring bean的后置增强器BeanFactoryPostProcessor。 BeanFactoryPostProcessor在bean的生命周期中&#xff0…

企业移动内容管理(MCM)

1.什么是移动内容管理 &#xff08;MCM&#xff09; 移动内容管理 &#xff08;MCM&#xff09; 是指在组织中使用的移动设备上分发和管理企业文件的过程&#xff0c;以确保授权用户可以通过批准的设备安全地访问所需的资源。MCM 允许 IT 管理员在其组织员工使用的智能手机、平…

音频基础知识简述 esp-sr 上手指南

此篇博客先对音频基础知识进行简要叙述&#xff0c;然后帮助读者入门 esp-sr SDK。 1 音频的基本概念 1.1 声音的本质 声音的本质是波在介质中的传播现象&#xff0c;声波的本质是一种波&#xff0c;是一种物理量。 两者不一样&#xff0c;声音是一种抽象的&#xff0c;是声…

Vue学习笔记(6)

6.1 组件 6.1.1 什么是组件 Vue的组件是可复用的Vue实例&#xff0c;它可以封装HTML元素和 CSS样式以及与之相关的JavaScript行为。每个组件都有自己的作用域&#xff0c;因此它可以避免全局作用域中的命名冲突&#xff0c;并且可以方便地在不同的Vue实例中重复使用。组件的结…

2023年武汉安全员C证报考条件、流程、报名时间是什么?启程别

2023年武汉安全员C证报考条件、流程、报名时间是什么&#xff1f;启程别 安全员C建筑施工企业专职安全生产管理人员&#xff0c;是指在企业专职从事安全生产管理工作的人员&#xff0c;包括企业安全生产管理机构的负责人及其工作人员和施工现场专职安全生产管理人员。武汉安全员…

Firewall App Blocker v1.7 防火墙管理设置工具多语言版

Firewall App Blocker 是一款由 BlueLife 与 Velociraptor 开发的免费且功能强大的防火墙设置软件。在 Windows 操作系统中,您可以使用 Windows 防火墙来阻止或解除阻止某些应用程序的联网,然而微软并没有为 Windows 防火墙提供一个易于使用的界面,来让用户使用其强大的功能…

高斯分布、高斯混合模型、EM算法详细介绍及其原理详解

相关文章 K近邻算法和KD树详细介绍及其原理详解朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解决策树算法和CART决策树算法详细介绍及其原理详解线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解硬间隔支持向量机算法、软间隔支持向量机算法、非线性支持向量机算法详细…

【备战面试】每日10道面试题打卡-Day5

本篇总结的是计算机网络知识相关的面试题&#xff0c;后续也会更新其他相关内容 文章目录1、计算机网络的各层协议及作用是什么&#xff1f;2、简述一下DNS的工作流程3、TCP与UDP有什么区别&#xff1f;4、TCP协议如何保证可靠传输5、拥塞控制机制是什么&#xff1f;6、HTTP 与…

朋友去华为面试,轻松拿到26K的Offer,羡慕了......

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

应用层与传输层~

文章目录应用层自定义应用层协议什么是自定义应用层协议自定义方式运输层运输层概述运输层特点运输层协议UDP协议UDP的特点UDP首部格式校验规则TCP协议TCP的特点TCP协议段格式TCP的性质确认序号超时重传连接管理三次握手四次挥手TCP的状态滑动窗口流量控制拥塞控制延迟应答捎带…

linux笔记(10):ubuntu环境下,基于SDL2运行lvgl+ffmpeg播放mp4

文章目录1.ubuntu安装ffmpeg1.1 源码安装1.1 克隆ffmpeg源码1.2 配置编译条件&#xff0c;编译&#xff0c;安装1.2 直接安装依赖包2.下载lvgl源码2.1 测试原始代码2.2 运行lv_example_ffmpeg_2()例程2.2.1 配置 LV_USE_FFMPEG 为 12.2.2 lv_example_ffmpeg_2()替换lv_demo_wid…

C++核心知识(二)—— 类和对象(类的封装)、对象的构造和析构(浅拷贝、深拷贝、explicit、动态分配内存)

【上一篇】C核心知识&#xff08;一&#xff09;—— C概述、C对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)【下一篇】C核心知识&#xff08;三&#xff09;—— 静态成员(变量、函数、const成员)、面向对象模型(this指针、常函数、常…

linux安装pycharm

linux安装pycharm1.下载相关软件包2. 安装步骤2.1 解压文件2.2 开启命令2.4 创建快捷方式官网链接 https://www.jetbrains.com/pycharm/download/#sectionlinux 1.下载相关软件包 找到自己下载的版本下载 2. 安装步骤 2.1 解压文件 进入压缩包路径 解压文件【我指定了解…

设计模式-第10章(建造者模式)

建造者模式建造者模式建造者模式解析建造者模式的基本代码结构建造者模式 建造者模式&#xff08;Builder&#xff09;&#xff0c;将一个复杂对象的构建和表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 如果我们用了建造者模式&#xff0c;那么用户就只需指定…

欢乐消除开心假日协议解密

欢乐消除开心假日协议解密协/议/流/量/解/密分析欢乐消除开心假日这款游戏流量的协议加密方式。序欢乐消除开心假日是一款合成模拟家装的游戏&#xff0c;在这个游戏中&#xff0c;你将成为一位充满热情的设计师&#xff0c;与好友一起经营工作室。你需要根据客户的需求重新设计…

详解PyTorch Tensor 数据类型——张量

目录 张量 张量的结构 张量的创建 张量的操作 数学运算 逻辑运算 形状操作 索引和切片 张量的维度变换 常见的数据类型存储 附录PyTorch官方API中文文档 张量 在PyTorch中&#xff0c;张量&#xff08;Tensor&#xff09;是一种常见的数据类型&#xff0c;它是一个…

如何快速将多图片合并拼接成一张大图并保留原图质量 - 极速图片合成拼接器软件简介

在工作中我们有时需要把多张图片打印在一张纸上&#xff0c;那就必须手动排列和调整每张图片的大小&#xff0c;这可是一项费时费力的任务。 借助极速图片合成拼接器这款软件&#xff0c;终于可以快速自动解决这种任务啦&#xff01; 它是一款可以自动一次性将多个图像文件合并…

Jenkins部署angular11自动打包

可能年纪大了&#xff0c;对于新东西的学习和接收有点慢&#xff0c;花了差不多一周的时间&#xff0c;终于把jenkins配置好了&#xff0c;可以自动打包&#xff0c;与手动打出来的一样&#xff0c;以后就解放双手了。#!/bin/bashnpm cache clean -fnpm -vnode -vnpm install n…