SpringBoot动态修改日志等级
SpringBoot动态修改日志等级
一、介绍
在平常开发中,日志等级都是固定死的,某些debug级别的日志是默认不放开的。
当需要查看生产的日志权限时,发现日志级别不够,可以使用动态修改日志的权限。
由于SpringBoot默认使用的是logback日志,故此本文主要是动态修改logback的日志级别。
二、代码
我们只需要写一个controller接口,如下
1234567891011121314151617181920212223242526272829303132package com.banmoon.test.controller;import ch.qos.logback.classic.Level;import ch.qos.logback.classic.Logger;import ch.qos.logback.classic.LoggerContext;import com.banmoon.test.obj.dto.ResultData;import com.banmoon.test.obj.request.LogLevelChangeRequest;import i ...
为自己模拟的IOC容器添加上DI注入
为自己模拟的IOC容器添加上DI注入
一、介绍
上一篇中,模拟Spring实现了一个简易的IOC容器,完成了初始化bean的操作,统一交给了一个Map集合进行管理。
模拟Spring实现一个简易的IOC容器
现在,将为这个IOC容器添加DI注入功能
二、实现
在编写之前,我们先加一个工具类,用来获取接口所实现的子类Class对象,也是通过子类
12345<dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.10.2</version></dependency>
代码如下,对比上一次,稍稍做了一点封装,使得步骤更加清晰
123456789101112package com.banmoon.test.mockioc.annotation;import java.lang.annotation.ElementType;import java.l ...
vue2中的组件
vue2中的组件
作用:基于组件开发,易维护,易复用
分类:使用的作用域不同分为全局组件和局部组件
注意:
组件名需要与原来的html标签不一致,且不要有大写字母
组件的data数据是一个函数,将对象return出去,与vue实例不一致
组件的template只能存在一个根标签
一、全局组件
1234567891011121314151617181920212223242526272829303132<div id="app"> <my-component></my-component></div><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script> Vue.component('MyComponent', { template: ` <div> ...
模拟Spring实现一个简易的IOC容器
模拟Spring实现一个简易的IOC容器
一、介绍
在模拟实现 IOC容器之前,我们必须要掌握反射相关的知识,毕竟 IOC容器采用的是反射进行的查找创建。
反射可以看我以前的这篇文章
Java注解的介绍和反射使用 | 半月无霜 (banmoon.top)
二、步骤
在 spring的包中,有这么一个接口 ApplicationContext.java,他是一个容器接口,一切的开始都是由它开始,spring中定义了各种场景下使用的实现类,其中常见有以下几种实现类
AnnotationConfigApplicationContext:通过注解配置初始化容器
ClassPathXmlApplicationContext:通过 xml配置文件初始化容器
AnnotationConfigServletWebApplicationContext:注解配置加载 web环境的容器
既然我们要自己写一个容器,我们也需要一个这样的容器类,接口不接口的无所谓,我们可以不考虑结构,只考虑效果。故我们只需要一个容器类就好了。
除了容器外,我们还需要一个注解,分别作用于类上,作为标识此类要进行初始 ...
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 ...