bean的作用域和生命周期
bean的作用域和生命周期
一、bean的作用域
在 Spring中,那些组成应用程序的主体及由 Spring IOC容器所管理的对象,被称之为 bean。
简单地讲,bean就是由 IOC容器初始化、装配及管理的对象。
而作用域代表的 bean的创建存在方式,可以在哪里使用
我们分别可以使用以下这四种情况
scope取值
含义
创建对象的时机
singleton(默认)
在一个IOC容器中,这个 bean对象只有一个实例
IOC容器初始时创建单例 bean
prototype
在一个IOC容器中,这个 bean有多个实例
获取 bean的时候
request
每一次 http请求,都会创建一个 bean
每一次 http请求的时候
session
同一个 http session中,有且仅有一个 bean
产生新的 http session会话的时候
后面两种不做要求,仅用在基于 web的 Spring ApplicationContext环境
演示 singleton和 prototype的区别
12345678910111213141516171 ...
将本地jar包添加至本地Maven仓库
将本地jar包添加至本地Maven仓库
一、介绍
在平常开发过程中,常常会遇到网络卡顿,导致下载不了maven的依赖jar,这时候就需要拿到同事的jar包,自己导入到本地的仓库中。
如下进行使用
二、使用
将本地jar包放一个合适的位置,接着打开cmd黑窗输入下面这段代码,即可加入至本地的maven仓库
1mvn install:install-file -DgroupId=com.banmoon.test -DartifactId=core -Dversion=1.0.1 -Dpackaging=jar -Dfile=C:\Users\banmoon\Desktop\core-3.4.0.jar
其中里面的参数代表含义如下
-DgroupId:对应groupId
-DartifactId:对应artifactId
-Dversion:对应version
如此上述添加成功后,我们可以这样引用
1234567<dependencies> <dependency> <groupId>com.banmoon.test&l ...
dependencyManagement和dependencies的区别
dependencyManagement和dependencies有什么区别
一、Maven的包管理
在maven中,dependencyManagement、dependencies和dependency,这三个标签是用来管理项目依赖包的,但许多小伙伴都不清楚它们之间的区别,下面将讲解他们之间的区别,以及如何在项目中使用这些标签
12345678910<!-- 它们之间的嵌套关系 --><dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> ...
什么!MyBatis的xml还可以这么写
什么!MyBatis的xml还可以这么写
一、介绍
MyBatis的XML动态SQL相信大家不陌生了,本文主要讲解一些比较容易出错、忘记,比较冷门的写法。
二、内容
1)bind标签
这是一个冷门的标签,它的作用是可以使用OGNL表达式创建一个变量设置到上下文中。
比如说要进行一次模糊查询,使用bind标签来进行拼接百分号
12345678910111213141516<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.banmoon.test.mapper.UserMapper"> <select id="getListByUsername" ...
Validated分组校验及扩展
@Validated分组校验及扩展
一、介绍
在springBoot项目中,我们往往要对参数进行校验,如果在代码中进行,就会显得很杂乱冗余
我在以前有介绍过@Valid注解的使用和扩展,点击传送门进行查看
但上面这篇文章整理相关的知识点有局限性,主要体现在以下方面
没有分组校验
没有嵌套校验
校验都是针对一个字段的,没有多个字段之间关联的校验;比如说开始日期必须小于结束日期
故此,得使用@Validated来进行完善校验。
二、使用
1)分组校验
1234567891011121314151617181920212223242526272829303132package com.banmoon.test.controller;import com.banmoon.test.dto.ResultData;import com.banmoon.test.obj.request.ValidGroupRequest;import org.springframework.validation.annotation.Validated;import org.springframew ...
MySQL连表update操作
MySQL连表update操作
一、介绍
记录一下MySQL连表后进行update的操作,这可以一口气同时改动到多张表的数据,可以取到关联表的数据进行更新。
作用还是比较大的,如下
二、使用
1)建表
分别有以下四张表,分别为
学生表
班级表
学生评分表
班级评分表
123456789101112131415161718192021222324252627CREATE TABLE `tb_student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `code` varchar(20) NOT NULL COMMENT '学号', `name` varchar(20) NOT NULL COMMENT '姓名', `class_id` int(11) NOT NULL COMMENT '班级ID', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 C ...
使用Stream流完成并集、交集和差集
使用Stream流完成并集、交集和差集
一、介绍
本文将进行介绍使用Stream流的方式,来完成对象集合的并集、交集和差集。
二、代码
先建立一个User.java,一会使用它来创建集合,并重写了它的equals方法
12345678910111213141516171819202122232425262728293031323334package com.banmoon.test;import lombok.AllArgsConstructor;import lombok.Data;import java.util.Objects;/** * @author banmoon */@Data@AllArgsConstructorpublic class User { private Integer id; private String name; @Override public boolean equals(Object o) { if (this == o) return true; if ...
稀疏数组
稀疏数组
一、介绍
稀疏数组可以看作是普通数组的压缩,当一个数组中大部分元素为0或同一个值时,可用稀疏数组来保存该数组。
由此可以发现,当一个数组上出现大量无用的数组时,我们可以使用一些方法将其压缩成稀疏数组进行存储,等到使用的时候再进行解压还原。
最经典的案例便是五子棋了,如果要实现退回,保存当前五子棋进度,加载五子棋进度的时候,原先的数组就会显得臃肿,这时候稀疏数组就可以派上用场了。
稀疏数组的压缩方法:
记录原数组的大小,几行几列,以及有多少个不同的值
记录原数组不同的值的行数和列数,将其保存在一个小的数组之中
二、实现
1)思路分析
如果原始数组是11*11的一个二维数组,里面的有效值个数有三个,
那么转为稀疏数组后,将会变成一个4*3的稀疏数组。
如下图所示
转换前
转换后
那么转换后的稀疏数组代表着什么呢,如下图所示
由此可以分析出来,将二维数组转换成为稀疏数组只需要这么几步就可以成功。
遍历原数组,得到原数组中有效值的个数num
创建一个稀疏数组,大小为(num+1)*3
稀疏数组的第0行存放,原数组的行个数,列个数,以及 ...
openfeign的几种调用方式
openfeign的几种调用方式
一、介绍
先上openfeign的maven依赖,这边注册中心用的是nacos,具体版本看自己的需求
123456789<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.2.2.RELEASE</version></dependency>
二、示例代码
1)客户端
1234567891011121314 ...
二叉树详解
二叉树详解
一、开始
什么是树,什么又是二叉树?我知道大家都听过,但对于具体的概念,应该还是比较模糊的吧?
一起来看看,什么是树,什么又是二叉树!
二、概念
1)树结构概念
树是一种数据结构,它是由节点相连,带来的一个层次结构的数据集合,且除了根节点以外,其余节点有且只有一个父节点。
与链表不同的是,树的连接关系往往是一对多的关系。
树结构通常表现为下图方式
子节点:一个节点指向下一个节点时,下个节点是上个节点的子节点。上图A节点的子节点是B节点和C节点
父节点、双亲节点:一个节点指向下一个节点时,下个节点是上个节点的子节点。上图B节点的父节点是A节点
兄弟节点:拥有同一个父节点的两个节点,互为兄弟节点。上图如D节点和E节点互为兄弟节点
节点的度:拥有子节点的数量称为节点的度。如D节点的度为3,C节点的度为2
节点的权:代表节点中存的对象。如D节点代表存了D字符
根节点:一颗树最开始的节点,被称为根节点。上图为A节点
叶子节点:没有子节点的节点,也就是度为0的节点。上图为H节点、E节点、F节点等
内部节点、枝节点:除了根节点和叶子节点以外的节点。如B节 ...