SpringBoot-02-自动配置原理
自动配置原理@SpringBootApplication 解析我们是在 @SpringBootApplication 中确定的 SpringBoot 的程序入口,也是 SpringBoot 的初始化开始的地方。那么 SpringBoot 是如何实现自动配置的呢,将 @SpringBootApplication 点开,可以看到是下面三个注解组成的:
123@SpringBootConfiguration@ComponentScan@EnableAutoConfiguration
@SpringBootConfiguration 本质就是个 @Configuration 表示这个类是一个配置类(也就是可以当作 applicationContext.xml 使用的类),比如在里面使用注解 @Bean 代替 <bean> 来配置 IOC 容器的 Bean。
@ComponentScan 主要是用来扫描包组件的,它可以自定义扫描的 BasePackage,如果没有指定的话,就是 @SpringBootApplication 所在的地方为 BasePackage 。
@EnableA ...
SpringBoot-01-快速开始和自动配置
SpringBoot 快速开始导包SpringBoot 项目只需要一个普通的 Maven 项目就可以了。我们是通过运行 SpringBoot 的 SpringApplication.run() 方法,来让 SpringBoot 控制整个项目的。
首先我们需要将在 Maven 中引入包含了大量依赖信息的 SpringBoot parent(继承信息),和我们要进行 Web 开发的 starter (真正的引入依赖下载 jar 包)
123456789101112<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.3</version></parent><dependencies> <dependency> <groupId>org.spri ...
IDEA-大揭秘
我要好好学习 IDEA!IDEA 是什么,IDEA 是世界上最棒的 Java 开发工具。但是因为我对它的不熟悉,基本上看着各种英文选项都看不懂,所以不可以这样子下去了!我要更好的了解我手上的开发工具,来减少 Debug 的时间!
项目管理Project对于 IDEA 来说,Project 是一个项目的总称,而 Module 是项目不同部分实现的模块。比如一个电商系统中,需要使用到分布式系统开发多个服务器后台,那么 Project 就是这个电商系统,Module 就是服务器1、服务器2、的开发模块。
当然也可以一个 Project 只包含一个 Module,那么这个时候两者就是同一个东西了,都指的是当前项目。
如果想要一个 Project 包含多个 Module,那么就新建一个空的 Project,然后在空 Project 中新建各种模块。这个空的 Project 就是起一个约束的作用:
Module然后就是关于项目下面的模块的单独管理了:
1 表示选择的相应模块进行设置。
2 表示模块的目录结构的标识,比如将某些目录标识为源码目录,资源目录等等,作用是让 IDEA 对不同目录的内容做 ...
Git学习笔记
Git 概念分布式与集中式其实这两个在版本控制系统里面区别就是历史版本存放位置。
集中式版本控制系统单的历史版本是存放在一个固定的服务器上面的,每次写代码只是拿到其中的一个版本,写完之后提交。这样一旦服务器挂掉,就无法工作了。
而分布式版本控制系统的历史版本是所有人都在本地有一份的,服务器的作用是用来方便大家同步本地的版本(合并别人的修改),这样即使服务器挂掉,可以一对一的同步代码,甚至不同步也可以,手里有整个历史版本,可以回退,不影响工作。
所以这就是 Git 分布式版本控制系统的强大之处!
Git 历史Git 的来源是 Linus 不满意其他人写的版本控制系统,自己花了两个星期写的。牛的牛的!
Git 工作原理Git 将文件分为三个区域:
工作区的文件 -> git add -> 暂存区的文件 -> git commit -> 本地库的文件 -> git push —> 远程库
工作区其实就是我们写代码的地方,写好一个代码文件之后添加到暂存区,等到整个版本的很多代码文件都写好并加入暂存区之后,就可以将暂存区里面的所有内容作为一个版本更新提交到本地 ...
MyBatis-04-动态SQL和缓存系统
if 标签<if test="Expression"></if>
其中 Expression 为加强版本的 if 表达式,就是 Java 里面的 if 表达式(指可以调用其他方法),并且可以使用 and or 代替 && || 符号。
choose、when、otherwise 标签故名思意就是很常规的标签罢了。
trim、where、set 标签这三个标签主要是为了拓展 if 标签存在的。
主要是比如 and , 这些符号在拼接的时候不是很可控,所以多了这些标签。
wherewhere 标签有两个作用:
在内部有 if 判断成立的时候添加 where 符号
去掉句子开头的 and or 符号
setset 标签也有两个作用:
在内部有 if 判断成立的时候添加 set 符号
去掉句子结尾的逗号
trimtrim 其实就是自定义版本的前两者,拥有属性 prefix 和 suffix 来设置内部 if 成立之后添加的关键词,suffixOverrides preffixOverrides 用来去除 if 里面可能会多出来 ...
MyBatis-03-XML映射文件
标签属性insert update delete这个三个标签分别负责实现:插入更新和删除,三者的属性非常接近。
属性设置
属性
描述
id
此语句绑定接口的方法
parameterType
用来说明方法输入的参数类型,但这个类型通过反射可以拿到,所以不需要写
flushCache
true/false:true此语句被调用之后刷新本地缓存和二级缓存。
timeout
整形等待数据库的最长秒数,这个不用填,交给 Spring 控制
statementType
执行 SQL 使用的语句类型,可选 STATEMENT,PREPARED 或 CALLABLE,表示 Statement,PreparedStatement 和 CallableStatement,默认PREPARED
useGeneratedKeys(适用于 insert 和 update)
true/false:false 开启之后,执行完 SQL 会在传入的对象中自动填写数据库生成的主键值(需要设置keyProperty)
keyProperty(适用于 insert 和 update)
搭配 ...
MyBatis-02-全局配置文件
properties 属性这里的 properties 有三种配置方式:
在 properties 内部标签定义:
123456<properties> <property name="jdbc.userName" value="Xorex"/> <property name="jdbc.password" value="123456"/> <property name="jdbc.url" value="https://xorex.space/"/> <property name="jdbc.driver" value="space.xorex.jdbc.Driver"/></properties>
引入外部的配置文件
1<properties resource="JDBC.properties" ...
MyBatis-01-基础与配置
MyBatis 概述Mybatis 是一种持久层的框架,通过建立接口的方法和 XML 注册的 SQL 语句的映射关系来实现对数据库的操作。
入门获取数据库连接之前首先获取数据库的连接实例 SqlSession 的连接池 SqlSessionFactory:
12345678910111213private static SqlSessionFactory factory; //连接池static { try { String resource="MyBatis-config.xml"; //连接池的配置文件 InputStream inputstream = Resources.getResourceAsStream(resource); //将配置文件读入流中 factory = new SqlSessionFactoryBuilder().build(inputstream); //按照配置文件建造 SqlSession 连接池 } catch (IOException e) & ...
SpringMVC-架构解析
SpringMVC 工作流程
流程图补充说明待更新…
DispatcherServlet 九大组件MultipartResolver多媒体解析器,一般用来实现上传下载的功能
LocaleResolver国际化解析器,自动从请求头中的地区和语言信息解析并获取 Locale 对象,并设置到响应内容中,来实现国际化。
ThemeResolver主题解析器,主题是样式、图片及它们所形成的显示效果的集合。一套主题对应一个 properties文件,里面存放着与当前主题相关的所有资源。
List<HandlerMapping>请求映射处理的集合,作用是判断请求和对应的处理器之间的映射关系,确保请求能找到对应的处理器。
List<HandlerAdapter>处理器适配器集合,因为在 SpringMVC 中 Handler 可以是任意形式的,比如 @RequestMapping 的方法,实现 Controller 接口的类,为了将这些 Handler 统一规格给 SpringMVC 使用,就需要能转化这些 Handler 的 Adapter。
List<Handler ...
Java 异常阅读
异常信息解读12345678910111213141516171819202122public class Test { private void fun1() throws IOException { throw new IOException("level 1 exception"); } private void fun2() { try { fun1(); } catch (IOException e) { throw new RuntimeException("level 2 exception", e); } } public static void main(String[] args) { try { new Test().fun2(); ...