软考高级系统架构师通过
喜报
2024上半年软考刚刚出成绩了,已通过,特此纪念
开心~
SpringIoc-xml配置方式组件管理
三、Spring IoC容器和核心概念3.1 组件和组件管理概念
3.1.1 什么是组件?
回顾常规的三层架构处理请求流程:
整个项目就是由各种组件搭建而成的:
3.1.2 我们的期待
有人替我们创建组件的对象
有人帮我们保存组件的对象
有人帮助我们自动组装
有人替我们管理事务
有人协助我们整合其他框架
……
3.1.3 Spring充当组件管理角色(IoC)那么谁帮我们完成我们的期待,帮我们管理组件呢?当然是Spring 框架了!组件可以完全交给Spring 框架进行管理,Spring框架替代了程序员原有的new对象和对象属性赋值动作等!Spring具体的组件管理动作包含:
组件对象实例化
组件属性属性赋值
组件对象之间引用
组件对象存活周期管理
……我们只需要编写元数据(配置文件)告知Spring 管理哪些类组件和他们的关系即可!注意:组件是映射到应用程序中所有可重用组件的Java对象,应该是可复用的功能对象!
组件一定是对象
对象不一定是组件综上所述,Spring 充当一个组件容器,创建、管理、存储组件,减少了我们的编码压力,让我们更加专注进行业务编写!
3.1. ...
Spring声明式事务
六、Spring 声明式事务6.1 声明式事务概念6.1.1 编程式事务编程式事务是指手动编写程序来管理事务,即通过编写代码的方式直接控制事务的提交和回滚。在 Java 中,通常使用事务管理器(如 Spring 中的 PlatformTransactionManager)来实现编程式事务。
编程式事务的主要优点是灵活性高,可以按照自己的需求来控制事务的粒度、模式等等。但是,编写大量的事务控制代码容易出现问题,对代码的可读性和可维护性有一定影响。
123456789101112131415161718192021Connection conn = ...; try { // 开启事务:关闭事务的自动提交 conn.setAutoCommit(false); // 核心操作 // 业务代码 // 提交事务 conn.commit(); }catch(Exception e){ // 回滚事务 conn.rollBack(); }finally{ // 释放数据库连接 ...
SpringIoc-注解配置方式组件管理
4.3 基于 注解 方式管理 Bean4.3.1 实验一: Bean注解标记和扫描 (IoC)
注解理解
和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作。本质上:所有一切的操作都是 Java 代码来完成的,XML 和注解只是告诉框架中的 Java 代码如何执行。举例:元旦联欢会要布置教室,蓝色的地方贴上元旦快乐四个字,红色的地方贴上拉花,黄色的地方贴上气球。
班长做了所有标记,同学们来完成具体工作。墙上的标记相当于我们在代码中使用的注解,后面同学们做的工作,相当于框架的具体操作。
扫描理解Spring 为了知道程序员在哪些地方标记了什么注解,就需要通过扫描的方式,来进行检测。然后根据注解进行后续操作。
准备Spring项目和组件
准备项目pom.xml
12345678910111213141516171819202122232425<dependencies> <!--spring context依赖--> <!--当你 ...
Spring AOP面向切面编程
五、Spring AOP面向切面编程5.1 场景设定和问题复现
准备AOP项目项目名:spring-aop-annotationpom.xml
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647<dependencies> <!--spring context依赖--> <!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>6.0.6</version> </dependency> <!--junit5测试--> ...
瑞吉外卖02
瑞吉外卖-Day02课程内容
完善登录功能
新增员工
员工信息分页查询
启用/禁用员工账号
编辑员工信息
1. 完善登录功能1.1 问题分析前面我们已经完成了后台系统的员工登录功能开发,但是目前还存在一个问题,接下来我们来说明一个这个问题, 以及如何处理。
1). 目前现状
用户如果不登录,直接访问系统首页面,照样可以正常访问。
2). 理想效果
上述这种设计并不合理,我们希望看到的效果应该 是,只有登录成功后才可以访问系统中的页面,如果没有登录, 访问系统中的任何界面都直接跳转到登录页面。
那么,具体应该怎么实现呢?
可以使用我们之前讲解过的 过滤器、拦截器来实现,在过滤器、拦截器中拦截前端发起的请求,判断用户是否已经完成登录,如果没有登录则返回提示信息,跳转到登录页面。
1.2 思路分析过滤器具体的处理逻辑如下:
A. 获取本次请求的URI
B. 判断本次请求, 是否需要登录, 才可以访问
C. 如果不需要,则直接放行
D. 判断登录状态,如果已登录,则直接放行
E. 如果未登录, 则返回未登录结果
如果未登录,我们需要给前端返回什么样的结果呢? 这个时候, 我们可以 ...
瑞吉外卖04
瑞吉外卖-Day04课程内容
文件上传下载
菜品新增
菜品分页查询
菜品修改
1. 文件上传下载1.1 上传介绍1.1.1 概述文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。
文件上传时,对页面的form表单有如下要求:
表单属性
取值
说明
method
post
必须选择post方式提交
enctype
multipart/form-data
采用multipart格式上传文件
type
file
使用input的file控件上传
1.1.2 前端介绍1). 简单html页面表单
12345<form method="post" action="/common/upload" enctype="multipart/form-data"> <input name="myFile" type="f ...
瑞吉外卖05
5.瑞吉外卖-第五天课程内容
新增套餐
套餐分页查询
删除套餐
短信发送
手机验证码登录
1. 新增套餐1.1 需求分析套餐就是菜品的集合。
后台系统中可以管理套餐信息,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,并且需要上传套餐对应的图片,在移动端会按照套餐分类来展示对应的套餐。
1.2 数据模型新增套餐,其实就是将新增页面录入的套餐信息插入到setmeal表,还需要向setmeal_dish表插入套餐和菜品关联数据。所以在新增套餐时,涉及到两个表:
表
说明
备注
setmeal
套餐表
存储套餐的基本信息
setmeal_dish
套餐菜品关系表
存储套餐关联的菜品的信息(一个套餐可以关联多个菜品)
两张表具体的表结构如下:
1). 套餐表setmeal
在该表中,套餐名称name字段是不允许重复的,在建表时,已经创建了唯一索引。
2). 套餐菜品关系表setmeal_dish
在该表中,菜品的名称name,菜品的原价price 实际上都是冗余字段,因为我们在这张表中存储了菜品的ID(dish_id),根 ...
瑞吉外卖06
瑞吉外卖-第六天课程内容
用户地址簿功能
菜品展示
购物车
下单
1. 用户地址簿功能1.1 需求分析地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。
对于地址簿管理,我们需要实现以下几个功能:
新增地址
地址列表查询
设置默认地址
编辑地址
删除地址
1.2 数据模型用户的地址信息会存储在address_book表,即地址簿表中。具体表结构如下:
这里面有一个字段is_default,实际上我们在设置默认地址时,只需要更新这个字段就可以了。
1.3 导入功能代码对于这一类的单表的增删改查,我们已经写过很多了,基本的开发思路都是一样的,那么本小节的用户地址簿管理的增删改查功能,我们就不再一一实现了,基本的代码我们都已经提供了,直接导入进来,做一个测试即可。
对于下面的地址管理的代码,我们可以直接从资料拷贝,也可以直接从下面的讲义中复制。
1). 实体类 AddressBook(直接从课程资料中导入即可)
所属包: com.itheima.reggie.entity
12345678910111 ...
瑞吉外卖01
瑞吉外卖-Day01课程内容
软件开发整体介绍
瑞吉外卖项目介绍
开发环境搭建
后台登录功能开发
后台退出功能开发
1. 软件开发整体介绍作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这一小节,我们将从 软件开发流程、角色分工、软件环境 三个方面,来整体上介绍一下软件开发。
1.1 软件开发流程1). 第1阶段: 需求分析
完成产品原型、需求规格说明书的编写。
产品原型,一般是通过网页(html)的形式展示当前的页面展示什么样的数据, 页面的布局是什么样子的,点击某个菜单,打开什么页面,点击某个按钮,出现什么效果,都可以通过产品原型看到。
需求规格说明书, 一般来说就是使用 Word 文档来描述当前项目有哪些功能,每一项功能的需求及业务流程是什么样的,都会在文档中描述。
2). 第2阶段: 设计
设计的内容包含 产品设计、UI界面设计、概要设计、详细设计、数据库设计。
在设计阶段,会出具相关的UI界面、及相关的设计文档。比如数据库设计,需要设计当前项目中涉及到哪些数据 ...