Spring02

Spring02

1.Spring简介

Spring 是一个生态圈Spring是一个开源的Java企业级应用框架,提供了广泛的功能和特性,用于开发和管理Java应用程序。它的核心原则是基于IOCInversion of Control,控制反转)和AOPAspect-Oriented Programming,面向切面编程)。Spring框架的主要特点包括:
1. IOC容器:SpringIOC容器负责管理应用程序中的对象实例的生命周期和依赖关系。开发者通过配置文件或注解来声明对象的依赖关系,容器则负责自动装配并提供对象的实例。这种松耦合的方式使得应用程序更加灵活、可测试和可维护。
2. AOP支持:Spring通过AOP可以实现横切关注点的模块化,例如事务管理、日志记录等。开发者可以通过声明方式或编程方式将这些关注点应用到目标对象的方法上,而无需修改目标对象的代码。
3. 数据访问支持:Spring提供了多个模块,用于简化数据访问层的开发,包括对JDBCORM(如Hibernate)和NoSQL数据库的支持。通过这些模块,开发者可以更方便地进行数据库的操作。
4. Web开发支持:Spring提供了用于开发Web应用程序的模块,包括Spring MVCSpring WebFlux。它们简化了处理HTTP请求、管理会话和处理表单验证等任务。
5. 综合性的解决方案:Spring框架还包括许多其他模块,用于解决领域特定的问题,如安全性、缓存、消息队列等。这些模块可以根据需求选择使用,提供了一种综合性的解决方案。总之,Spring框架是一个强大而灵活的Java开源框架,它通过IOCAOP等特性,提供了一种基于配置和注解的编程模型,简化了企业级应用程序的开发和管理。

在这里插入图片描述

根据图片信息,可以将Spring框架的组件分为几个部分,并进行解释:Spring框架运行时(Spring Framework Runtime):这是整个Spring框架的基础,它提供了核心的功能和基础结构,使得其他组件能够协同工作。它负责创建、配置和管理应用程序对象,以及控制应用程序的生命周期。数据访问和集成(Data Access/Integration):这一部分包括了所有与数据访问和集成相关的功能。Spring框架提供了多种数据访问方式,如JDBCHibernateJPA等,还支持与各种数据源进行集成。此外,Spring还提供了多种消息传递方式,如RMIJMSEmail等,可以方便地实现应用程序之间的通信。WebWeb):这一部分主要涉及基于Web的应用程序开发。Spring框架提供了Spring MVC框架,用于构建基于WebJava应用程序。Spring MVC框架将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,并提供了多种用于处理HTTP请求和响应的功能。消息传递(Messaging):Spring框架支持多种消息传递方式,如JMSAMQPSMTP等。通过使用消息代理(Message Broker),应用程序可以发送和接收消息,实现分布式系统之间的异步通信和数据交换。Core Container(核心容器)是Spring框架的基础,它提供了Spring框架运行时所需的基本功能和基础结构,使得其他组件能够协同工作。Core Container包括Spring框架的核心功能,如IoC(控制反转)容器、Bean管理、依赖注入等。这些功能使得开发人员能够更轻松地管理和组织应用程序中的对象及其依赖关系,从而使得应用程序更易于维护和扩展。测试(Test):这一部分涉及应用程序的测试。Spring框架提供了多种测试工具和技术,如JUnitMockitoPowerMock等,可以用于编写单元测试和集成测试。此外,Spring还提供了Spring Test框架,用于对Spring应用程序进行集成测试。总之,Spring框架的体系结构提供了灵活性和可扩展性,使得开发人员能够创建具有高度可重用性和可维护性的应用程序。通过使用Spring框架的组件,可以实现应用程序的不同部分之间的松耦合和协同工作。

2.创建Spring项目

A pom文件添加依赖<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.7</version></dependency>B 创建resources文件夹 将其 mark as resource root  添加配置文件<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

3.Beanfactory获取bean对象(已废弃)

A 在配置文件中配置需要让spring管理的对象有哪些<bean id="people" class="com.aaa.test.People"></bean>B 通过spring的 BeanFactory获取对象 (控制反转IOC

4.ApplicationContext对象

	@Testpublic void test02(){//反转获取对象ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");People p1 = context.getBean("p1", People.class);p1.eat();}

5.Spring配置文件详解

5.1id、name、alias标签

    <bean id="p1" class="com.aaa.test.People"></bean>@Testpublic void test02(){//反转获取对象ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");People p1 = context.getBean("p1", People.class);p1.eat();}通过bean工厂去获取bean时 可以通过id去获取 id在配置中不能重复我们在配置bean的时候 可以给我们的bean起绰号<alias name="p1" alias="hahaha"></alias>People p1 = context.getBean("hahaha", People.class);

5.2class属性

<bean id="p1" class="com.aaa.test.People"></bean>class 配置的Spring核心容器需要管理的类 写的是类的全限定名底层是根据全限定名 通过反射Class.forName( 全限定名 ).newInstance(); 创建bean对象

6.lazy-init懒加载

   此时 我们创建一个类并且给这个类的空参构造中  加入一条输出语句使用spring管理这个类此时我们创建两个不同的容器类当我们创建ApplicationContext对象时,发现有输出语句,说明ApplicationContext被创建时,就会立刻将自己需要管理的bean(类)进行对象的创建  ---- 饿汉模式使用Beanfactory时,创建Beanfactory对象时,管理的类的对象不会被创建而是在getBean的时候才去创建 ----懒汉模式此时我们想让 ApplicationContext 不要太着急 让它也在getBean时 再去创建对象此时 我们只需要给 bean设置 lazy-init就可以了也可以在beans标签中添加默认懒加载default-lazy-init="true"

7.scope作用域

当我们调用 getBean多次获取同一个对象的时候 发现构造函数只被调用了一次说明getBean多次调用 获取的都是同一个对象Spring 对bean的创建 默认只创建一次 我们希望每次 getBean的时候 都创建一个新的对象此时可以设定 scope1.singleton 使用该属性定义Bean时,IO容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。2.prototype 使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。3.reguest该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于 webAppTicationContext环境。4.session该属性仅用于HTTP Session,同一个session共享一个Bean实例。不同Session使用不同的实例。适用于 webAppTicationContext环境.5.global-session 该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一下奶茶店怎么在小程序上做商城功能

随着移动互联网的普及&#xff0c;越来越多的消费者倾向于在手机上完成购物需求。对于奶茶店来说&#xff0c;在小程序上开设商城功能不仅可以扩大销售渠道&#xff0c;还能提高品牌知名度和用户体验。本文将探讨如何在小程序上为奶茶店实现商城功能。 对于奶茶店的商城功能&am…

Java从入门到精通-类和对象(一)

0. 类和对象 1. 面向对象概述 Java面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种强大的编程范式&#xff0c;它基于对象、类、封装、继承和多态等核心概念。这种编程范式使得代码更加模块化、可维护、可重用和可扩展。 1.1 对象和类…

docker系列(2) - 常用命令篇

文章目录 2. docker常用命令2.1 参数说明(tomcat案例)2.2 基本命令2.3 高级命令2.4 其他 2. docker常用命令 2.1 参数说明(tomcat案例) 注意如果分成多行&#xff0c;\后面不能有空格 # 拉取运行 docker run \ -d \ -p 8080:8080 \ --privilegedtrue \ --restartalways \ -m…

比较Visual Studio Code中的文件

目录 一、比较两个文件 1.1VS code中的文件大致分为两类&#xff1a; 1.2如何比较VS code中的两个文件&#xff1f; 二、并排差异模式&#xff1a;VS code中的一种差异模式 三、内联差异模式&#xff1a;VS code中的另一种差异模式 四、VS code忽略在行首或者行尾添加或删除…

图像分割笔记(二): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程))

文章目录 一、图像分割介绍二、YOLOv5-Seg介绍三、代码获取四、视频讲解五、环境搭建六、数据集准备6.1 数据集转换6.2 数据集验证七、模型训练八、模型验证九、模型测试十、评价指标一、图像分割介绍 图像分割是指将一幅图像划分为若干个互不重叠的区域,每个区域内的像素具有…

关于安卓grovvy开发(一)bugly混淆自动上报

背景 打包&#xff0c;mapping&#xff0c;上传&#xff0c;这些是不是都困扰了开发很多。苦于复制粘贴&#xff1f;反正我是。于是&#xff0c;有了这个 最终效果 最终的效果&#xff0c;就是点击项目的打包gradle&#xff0c;复制mapping文件且进行bugly混淆的自动上报。 …

LeetCode141.环形链表

这个题非常简单&#xff0c;我一下子就想到了用HashSet&#xff0c;从前往后把节点放入hashset中&#xff0c;如果set中存在这个节点说明存在环&#xff0c;如果把链表遍历完了说明不存在环&#xff0c;直接返回false&#xff0c;以下时我的代码&#xff1a; public class Sol…

环境扫描/透射电子显微镜气体样品架的真空压力和微小流量控制解决方案

摘要&#xff1a;针对环境扫描/透射电子显微镜对样品杆中的真空压力气氛环境和流体流量精密控制控制要求&#xff0c;本文提出了更简单高效和准确的国产化解决方案。解决方案的关键是采用动态平衡法控制真空压力&#xff0c;真空压力控制范围为1E-03Pa~0.7MPa&#xff1b;采用压…

Pytest模式执行python脚本不生成allure测试报告

1.安装allure 下载allure的zip安装包 将allure.zip解压到python的lib目录中 将allure的bin路径添加到环境变量path中(注意&#xff1a;配置环境变量后&#xff0c;一定要重启电脑。因为环境变量没生效&#xff0c;我搞了半天在pycharm不能生成报告&#xff0c;在cmd中可以生成…

【Redis】.net core Redis事件订阅与发布,基础篇

2023年&#xff0c;第38周。给自己一个目标&#xff0c;然后坚持总会有收货&#xff0c;不信你试试&#xff01; 发布与订阅&#xff08;Publish/Subscribe&#xff0c;也简称为 Pub/Sub&#xff09;是一种消息传递模式&#xff0c;用于解耦发布者和订阅者之间的关系。 目录 一…

华清远见第六课程day4作业

仿照string类&#xff0c;完成myString 类 #include <iostream> #include <cstring>using namespace std;class myString{ private:char *str;int size; public:myString():size(10){str new char[size];strcpy(str,"");}myString(const char*s){size …

【FPGA零基础学习之旅#12】三线制数码管驱动(74HC595)串行移位寄存器驱动

&#x1f389;欢迎来到FPGA专栏~三线制数码管驱动 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指…

Transformer(二)—— ResNet(残差网络)

Transformer&#xff08;二&#xff09;—— ResNet&#xff08;残差网络&#xff09; 一、背景1.1 梯度消失/爆炸1.2 网络退化(Degradation) 二、思路2.1 为什么需要更深的网络2.2 理想中的深网络表现 三、实践和实验效果3.1 构造恒等映射&#xff1a;残差学习&#xff08;res…

0016Java程序设计-springboot幼儿园管理系统

摘 要目 录系统设计开发环境 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于幼儿园管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了幼儿园管理系统&a…

【进阶篇】MySQL的MVCC实现机制详解

文章目录 0.前言1.基础介绍1.1. 什么是MVCC?1.1. 什么是当前读和快照读&#xff1f;1.1. 当前读&#xff0c;快照读和MVCC的关系1.1. MVCC能解决什么问题&#xff0c;好处是&#xff1f;1.1.1. 提高并发性能1.1.2. 避免死锁1.1.3. 解决脏读、不可重复读和幻读等问题1.1.4. 实现…

【unity3D】如何修改相机的默认视角

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的如何修改相机的默认视角 如何修改相机的默认视角 Game窗口运行的话视角是这样的&#xff1a; 此时Scene窗口的视角是这样的&…

游戏发行平台都有什么服务和功能?

游戏发行平台通常提供一系列服务和功能&#xff0c;以帮助游戏开发商将游戏推向市场&#xff0c;并为玩家提供游戏。以下是一些常见的游戏发行平台服务和功能&#xff1a; 1、游戏发布 发行平台允许游戏开发商将游戏上传到平台上&#xff0c;以供玩家下载和安装。 2、游戏销售…

qt作业day4

//clock_exercise.cpp#include "clock_timer.h" #include "ui_clock_timer.h"//时间事件处理函数 void Clock_Timer::timerEvent(QTimerEvent *event) {if(event->timerId() time_id){sys_tm QDateTime :: currentDateTime(); // int year sy…

远程恋爱网站部署秘籍——群晖虚拟机助ni秀恩爱

文章目录 前言1. 安装网页运行环境1.1 安装php1.2 安装webstation 2. 下载网页源码文件2.1 访问网站地址并下载压缩包2.2 解压并上传至群辉NAS 3. 配置webstation3.1 配置网页服务3.2 配置网络门户 4. 局域网访问静态网页配置成功5. 使用cpolar发布静态网页&#xff0c;实现公网…

习题练习 C语言(暑期第四弹)

自我小提升&#xff01; 前言一、数组二、指针运算三、统计每个月兔子的总数四、双指针的应用五、判断指针六、珠玑妙算七、两数之和八、数组下标九、指针十、寻找峰值十一、二级指针十二、大端小端十三、无符号参数十四、数对十五、截取字符串总结 前言 重要的事说三遍&#…