DanZ's Blog

a normal developer daily blog

0%

准备一下

由于我们使用 MyBatis 的时候,很少独立使用,所以我直接从 SpringBoot 自动装配,进入 MyBatis 来看看。 直接看 org.mybatis.spring.boot:mybatis-spring-boot-starter 源码目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
├── LICENSE
├── README.md
├── license.txt
├── mvnw
├── mvnw.cmd
├── mybatis-spring-boot-autoconfigure
│   ├── format.xml
│   ├── license.txt
│   ├── pom.xml
│   └── src
├── mybatis-spring-boot-samples
│   ├── mybatis-spring-boot-sample-annotation
│   ├── mybatis-spring-boot-sample-freemarker
│   ├── mybatis-spring-boot-sample-freemarker-legacy
│   ├── mybatis-spring-boot-sample-groovy
│   ├── mybatis-spring-boot-sample-kotlin
│   ├── mybatis-spring-boot-sample-thymeleaf
│   ├── mybatis-spring-boot-sample-velocity
│   ├── mybatis-spring-boot-sample-velocity-legacy
│   ├── mybatis-spring-boot-sample-war
│   ├── mybatis-spring-boot-sample-web
│   ├── mybatis-spring-boot-sample-xml
│   └── pom.xml
├── mybatis-spring-boot-starter
│   ├── license.txt
│   └── pom.xml
├── mybatis-spring-boot-starter-test
│   └── pom.xml
├── mybatis-spring-boot-test-autoconfigure
│   ├── format.xml
│   ├── pom.xml
│   └── src
├── pom.xml
└── travis
├── after_success.sh
└── settings.xml

mybatis-spring-boot-samples/mybatis-spring-boot-sample-xml 中刚好有我想要的示例,刚好不用自己写了,就使用这个示例来查看吧。

阅读全文 »

准备个需求

之前读其他无关数据库源码的时候,只是简单的依赖了 spring-boot-starter-web,现在由于需要数据库的参与,所以需要加上 MySQL 的驱动,以及一个最简单的 jdbc 框架。

阅读全文 »

简述

由于现在基本使用的都是 SpringBoot 项目来启动,所以我就直接建立在 SpringBoot 基础下看 WEB 容器了。 如果有一些项目开发经验就知道,SpringWEB 模块又名 SpringMVC,提供了视图数据整合以及可以直接返回 JSON 数据。前几年 JSP 当道的时候,各种 ViewResolver 层出不穷,据我所知的就有 FreeMarker JSP Beetl 等等。不过最近几年前端发生爆炸性变化,前后端能分离的都分离了,需要 SEO 的也很少使用 Java 来做了。所以现在 Java 后端项目的主要责职是提供业务所需要的交互数据给前端,不仅仅使用 JSON,还可以整合其他的传输协议,比如 Hessian XML Protobuf 等等,只要够折腾,什么格式都可以返回,不想折腾就使用 JSON 就可以了。 数据转换模块也会被 Spring 独立出来这个自然不需要再猜测,所以我们也可以为了减少传输使用的宽带,去定义第几个字节是什么东西。 那我们现在可以直接进入 SpringMVC 的源码来看看了。

阅读全文 »

SpringBoot

OK,现代 Java 开发者应该都对 SpringBoot 很熟悉了吧,一个很 "轻量级"IOC 容器。 我记得 SpringBoot 刚出来的时候,很多博客文章都会说 SpringBoot 减轻了 Java 开发工作者的负担,是个轻量级的框架。然而后面我才发现,并不轻量级。因为,SpringBoot 把需要依赖的东西给封装了起来,但其实比起之前自己控制依赖项目来说,反而会更重了一些,毕竟以前还可以自由组合。现在,SpringBoot 以及框架作者都提供了默认的依赖以及默认的配置,所以说这个框架轻量级其实并不是,要说轻量级应该只是说开发轻量级而已,菜鸟也可以快速上手建立一个后台项目而不必去关心太多项目配置的东西。 框架肯定是一个优秀的框架,我们项目全体也都是 SpringBoot 架构起来的,所以还是需要看看,SpringBoot 偷偷帮我们做了什么事情。

阅读全文 »

前言

关于 AOP 在日常开发中应该不算是一个新的名词了,AOP 可以帮助我们把业务之外,但是很多方法都需要调用的方法,无感的方外外部,并且通过配置让外部的 AOP 函数自动织入目标方法中。 常见的业务有:

  1. 记录方法调用的信息,时长;
  2. 初始化当前用户信息上下文,方便在业务内部快速获取。

那我就改改我之前的 Context 用的例子,来康康 Spring 是怎么做的。

阅读全文 »

简述

回顾一下上一篇,使用的是一个简单的 BeanFactory 实现 XmlBeanFactory。这个容器已经是一个过时的容器了,因为他并不能实现除了注册 BeanDefinition 之外的事情(比如 i18n 访问资源(骚一点的话可以加载网络 Spring 配置文件) 应用事件)。所以,就有了 spring-context 的出现。 我们现在知道了,Spring 把载入、解析、注册解耦成不同的模块,所以我们现在可以大概的知道:

  1. 载入:我们可以使用不同的方式载入配置文件,然后配置解析方式,生成 BeanDefinition 注册到底层的 Bean 容器中;
  2. 解析:不同的配置文件解析方式有所不同,但是有个共同的目的就是解析成 BeanDefinition 注册到容器中去;
  3. 注册:这块 Spring 已经提供了 DefaultListableBeanFactory 这个成熟的实现,所以即使我们想通过其他配置文件来配置我们的 Spring 项目的话,不用慌,只要用它就好了(奥森!)

那么仔细想想,我们是不是可以实现由 JSON 格式配置文件来配置的 BeanFactory

阅读全文 »

从大学就开始折腾黑苹果,迟迟没有做些记录,总觉得差点什么,所以这次趁我需要重装系统的机会,拍了些照片,结合一些文字来做一个教程吧。 阅读按照文章顺序来,不要跳着来,除非我注明让你可以跳过。

OSX系统

不做评价谁好谁差,但是作为 Web工程师 的话,在 osx 系统下的编程体验确实要比 Windows 下好很多,软件也特别干净,从来没有在你工作的时候,突然右下角来个弹窗给你看广告,或者直接把广告就弹在最顶层来影响你的工作。 jdk npm git Dart Flutter 这些程序,在 unix 系的 osx 下也从来没有报错。所以还是推荐使用的。

阅读全文 »

Spring项目模块

下了源码一看,我去(我其实没有那么惊讶毕竟功能强大,多也正常),Spring 居然有这么多的模块划分,但是这些模块都是做什么的,可能我们平常观察项目集成的时候,能够感受一些东西出来。比如:spring-webSpringMVC 的内容。所以在日常中,把 SpringMVC 当成一个独立框架是一个很有问题的说法,他其实也就是 Spring 家族中的一个小模块而已。除了这个模块比较常见,我们还使用了 AOP Transction 这些模块,因为很多时候,在框架的集成中,已经依赖好了这些中间对接模块,但是他其实存在于每一个基本的 web 项目中。 我一直很喜欢 Spring 提供的说明书:说明书链接 这个说明书开头就已经把所有模块,做什么事情的都总结好了,需要用到哪个模块的说明,进入对应的链接就好了:

阅读全文 »

心心想念很久读 Spring 源码,但是一直没有坚持下去。也看了一些别人怎么读源码的教程,然而有一天忽然在上班的公交上来了灵感,最方便的工具就在我手上啊! 对,就是那个叫 idea 的编码工具!

阅读全文 »