
spring技术栈
文章平均质量分 69
spring、springMVC、springboot
把苹果咬哭的测试笔记
喜欢分享软件测试、开发相关的各种知识。
展开
-
【SpringBoot2 从0开始】开发小技巧 - lombok、devtools、Spring Initailizr
一、Lombok还记得之前示例代码里,写javabean的时候往往要写一堆模板类的代码,比如:get、set、有参/无参构造方法、重写 toString 这些。package com.pingguo.boot.bean;public class Pet { private String name; public String getName() { r...原创 2021-09-08 23:57:00 · 99 阅读 · 0 评论 -
【SpringBoot2 从0开始】如何编写 springboot 应用?
如何编写 springboot 应用?其实都是有套路的。一、引入场景依赖既然要开发 springboot 应用,场景肯定是要先明确的,比如 web、缓存、消息队列等。然后根据具体场景来找相关的场景依赖,这里包括 springboot 提供的依赖,也包括第三方提供的场景依赖。然后在 pom.xml 中引入即可,比如这里引入spring-boot-starter-web。二、查看自动配...原创 2021-09-08 22:37:00 · 104 阅读 · 0 评论 -
【SpringBoot2 从0开始】自动配置原理入门(源码分析)
之前为什么会去了解一些底层注解,其实就是为了后续更好的了解 springboot 底层的一些原理,比如自动配置原理。一、@SpringBootApplication从 MainApplication 中的@SpringBootApplication开始。进入@SpringBootApplication,可以看到这是一个合成注解(红框中是要关注的)。1. @SpringBootConf...原创 2021-09-07 22:58:00 · 126 阅读 · 0 评论 -
【SpringBoot2 从0开始】底层注解 - @ConfigurationProperties 配置绑定
我们通常会把一些经常变动的东西放到配置文件里。比如之前写在配置文件application.properties里的端口号server.port=8080,另外常见的还有数据库的连接信息等等。那么,我的数据库连接信息放在配置文件里,我要使用的话肯定得去解析配置文件,解析出的内容在 bean 里面去使用。整个场景其实就是把配置文件里的所有配置,绑定到 java bean 里面。要完成这个场景...原创 2021-09-02 23:16:00 · 201 阅读 · 0 评论 -
【SpringBoot2 从0开始】底层注解 - @Conditional、@ImportResource
一、@ImportResource@Conditional注解,是根据条件进行装配。满足了 Conditional 指定的条件,就进行组件的注入。另外@Conditional是个根注解,在idea里使用 ctrl+H 可以打开它的结构。可以看到有许多的派生注解,每个注解都代表着一种功能。比如:@ConditionalOnBean:当容器中存在指定的组件,才会做某些事情。@Condi...原创 2021-09-01 22:17:00 · 177 阅读 · 0 评论 -
【SpringBoot2 从0开始】底层注解 - @Import
上一篇中了解到了@Configuration,可以注册组件。除此之外,还有许多注解也可以,用法跟之前学习 spring 的时候一样。比如,@Bean、@Component、@Controller、@Service、@Repository等。这篇介绍另外一种给容器添加组件的方法:@Import注解,给容器中导入组件。@Import 导入组件用法@Import的用法很简单,放在任意配置类或...原创 2021-08-31 23:06:00 · 148 阅读 · 0 评论 -
【SpringBoot2 从0开始】底层注解 - @Configuration
一、配置类@Configuration这个注解作用就是告诉 springboot 这是一个配置类。这个配置已经不陌生了,在之前 spring 相关的使用全注解方式时,就使用到了配置类。在配置类里,可以使用@Bean标记在方法上,给容器注册组件,默认也是单实例的。@Configuration //告诉SpringBoot这是一个配置类 == 配置文件public class MyConf...原创 2021-08-30 23:08:00 · 190 阅读 · 0 评论 -
【SpringBoot2 从0开始】实现自动配置的过程
在之前的 helloworld 示例中,已经初步体会到 springboot 自动导入依赖、完成配置的爽快了。那么,springboot 是如何实现的呢?一、依赖管理特性先看下上一篇内容示例中的pom.xml:<!--导入父工程--> <parent> <groupId>org.springframework.boot</grou...原创 2021-08-28 09:47:00 · 117 阅读 · 0 评论 -
【SpringBoot2 从0开始】开发世界著名程序体验 springboot
一、环境Java 8Maven 3.3+idea 2018(个人)环境要先安装好。关于 maven 配置配置本地仓库官网下载好 zip 包后解压,然后里面新建一个仓库目录 repository。打开 conf 目录下的 配置文件 settings.xml。在第 55 行的位置号,配置上你的repository路径。配置阿里云镜像继续在配置文件里,配置阿里云的镜像。...原创 2021-08-25 22:21:00 · 95 阅读 · 0 评论 -
【SpringBoot2 从0开始】springboot 与 spring
一、spring 可以做什么之前已经学习了 spring 的 IOC容器、AOP、springMVC 开发web应用等等,这里的 spring 实际是指 spring-framework 这个框架。然而,宏观上的 spring 是一个生态圈。spring 可以做什么?参考官网:微服务开发:当系统功能越来越多,就需要进一步拆分系统功能,一个模块一个应用,spring 可以帮助快速开发微服...原创 2021-08-24 21:51:00 · 166 阅读 · 0 评论 -
【SpringMVC 从 0 开始】使用注解方式配置 SpringMVC
使用配置类和注解代替 web.xml 和 SpringMVC配置文件 的功能。一、创建初始化类在 Servlet3.0 环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来配置 Servlet 容器。Spring 提供了这个接口的实现,名为SpringServletContainerInitiali...原创 2021-08-23 23:10:00 · 125 阅读 · 0 评论 -
【SpringMVC 从 0 开始】异常处理器
一、基于配置的异常处理SpringMVC 提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver。HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver,这个是默认使用的处理器,之前遇到的一些异常,其实springMVC 都已经给我们处理过了。SimpleMappin...原创 2021-08-22 21:27:00 · 103 阅读 · 0 评论 -
【SpringMVC 从 0 开始】拦截器介绍
springMVC 中的拦截器用于拦截控制器方法的执行。先创建出前置需要的一些条件:<a th:href="@{/testInterceptor}">测试拦截器</a>后端:@Controllerpublic class TestController { @RequestMapping("/testInterceptor") public St...原创 2021-08-22 10:21:00 · 101 阅读 · 0 评论 -
【SpringMVC 从 0 开始】文件上传和下载
使用 ResponseEntity 实现文件上传和下载在 static 下新建一个 img ,并且我放了一张图片在里面,然后重新 maven 打包一下。下载新建一个页面file.html,并且配置视图控制器,以便跳转:<mvc:view-controller path="/file" view-name="file"></mvc:view-controller>...原创 2021-08-21 20:54:00 · 92 阅读 · 0 评论 -
【SpringMVC 从 0 开始】HttpMessageConverter 报文信息转换器
HttpMessageConverter 是报文信息转换器,作用有 2 个:将请求报文转换为Java对象:请求报文是从浏览器发送到服务器,发送到服务器中就是 request 对象,将Java对象转换为响应报文:响应报文是服务器响应给浏览器的,服务器中用的java,浏览器不能解析java,所以要转换成响应报文给浏览器。其中,HttpMessageConverter 提供了两个注解:@Re...原创 2021-08-21 20:46:00 · 210 阅读 · 0 评论 -
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现添加功能
数据被删除差不多了,得做个添加的功能。一、前端改动1. 修改列表页,增加一个【添加】按钮点击这个按钮可以调到新增页面。<tr> <th colspan="5">员工列表</th> </tr> <tr> <th>id</th>...原创 2021-08-19 23:46:00 · 222 阅读 · 0 评论 -
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现修改功能
一、回显功能做实际修改操作之前,需要有个回显功能,就是点编辑页后可以看到数据。1.修改操作超链接这里的请求地址跟删除的一样,需要带上 id,因为要回显这个 id 的数据。<td> <a @click="deleteEmployee" th:href="@{/employee/} + ${employee.id}">删除</a> ...原创 2021-08-19 23:46:00 · 129 阅读 · 0 评论 -
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现删除功能
删除相对麻烦一点,因为 Rest 中得用 delete 方法请求。在前面已经提到如何实现 delete 和 put 方法请求了,这里同样借助表单来提交 post 请求,然后转成 delete 请求方法。一、修改列表前端代码1. 修改删除的请求地址Rest 中删除的请求地址应该是/employee/id},所以列表按钮【删除】对应超链接要改:<!DOCTYPE html>&...原创 2021-08-18 23:29:00 · 305 阅读 · 0 评论 -
【SpringMVC 从 0 开始】SpringMVC RESTFul 实战案例 - 实现列表功能
一、增加控制器方法在控制器类 EmployeeController 中,添加访问列表方法。@Controllerpublic class EmployeeController { @Autowired private EmployeeDao employeeDao; @RequestMapping(value = "/employee", method = Re...原创 2021-08-18 23:25:00 · 222 阅读 · 0 评论 -
【Spring 从0开始】Spring5 新功能 - @Nullable 注解和函数式注册对象
一、@Nullable 注解@Nullable 注解可以使用在方法、属性、参数上,分别表示方法返回可以为空、属性值可以为空、参数值可以为空。我们可以在源码里找到很多示例。1. 用在方法上方法的返回值可以为空。2. 用在参数上参数可以为空。3. 用在属性上属性值可以为空。二、支持函数式风格比如这里有一个类:public class User { public s...原创 2021-08-08 09:55:00 · 205 阅读 · 0 评论 -
【Spring 从0开始】Spring5 新功能,整合日志框架 Log4j2
本次系列的学习是基于 spring5 ,也就是最新的版本。spring5 的整个代码都是基于 java8 的,自身作了不少的优化,比如许多不建议使用的类和方法已经在代码库中删除。此外,spring5 框架自带了通用的日志封装,但是我们依然可以整合其他的日志框架使用,比如 Log4j。不过在 spring5 中移除了 Log4jConfigListener,需要使用 Log4j2。一、引入依...原创 2021-08-08 09:20:00 · 189 阅读 · 0 评论 -
【Spring 从0开始】JdbcTemplate 数据库事务管理 - 完全注解方式
在之前的操作中,相关的配置还是写在了 xml 配置文件中。现在,使用配置类的方式进行配置。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc...原创 2021-08-08 08:52:00 · 110 阅读 · 0 评论 -
【Spring 从0开始】JdbcTemplate 数据库事务参数
@Transactional() 注解里有不少参数,其中我们常用到的如下:一、propagation表示事务传播行为。就是说多个事务方法之间进行调用,这个过程中事务是如何进行管理的。这里的事务方法就是指对数据库表数据进行变化操作的方法。举例:有个 update() 方法:public void update() {}还有个 add() 方法:public void add(...原创 2021-08-07 22:09:00 · 253 阅读 · 0 评论 -
【Spring 从0开始】JdbcTemplate 数据库事务管理
现在有个账户表,里面存着用户金额。如果要真正地做好转账的操作,就要用到事务,否则当出现异常后会出现数据不一致等问题。try { // 第一步 开启事务 // 第二步 进行业务操作 // 第三步 没有发生异常,提交事务} catch(){ // 第四步 发生异常,事务回滚}一、spring 中的事务管理通常,把事务加在 service 层(业务逻辑层)。而在 spr...原创 2021-08-07 11:07:00 · 103 阅读 · 0 评论 -
【Spring 从0开始】JdbcTemplate 操作数据库
spring 对 jdbc 做了封装,就是 JdbcTemplate,可以让操作数据库更加方便。一、准备工作1. 引入依赖在之前的基础上,再引入这些依赖。2. 配置文件中配置数据库连接池外部文件 jdbc.properties:prop.driverClass=com.mysql.jdbc.Driverprop.url=jdbc:mysql://localhost:3306/use...原创 2021-08-05 22:47:00 · 83 阅读 · 0 评论 -
【Spring 从0开始】AOP 操作 - 通过 AspectJ 注解方式
通过注解方式,操作AOP。一、被增强类新建一个被增强的类 User,下面有个 add() 方法。package com.pingguo.spring5.aopanno;public class User { public void add() { System.out.println("add ... ..."); }}二、增强类创建增强类,用于编...原创 2021-08-04 22:39:00 · 82 阅读 · 0 评论 -
【Spring 从0开始】AOP 操作中的相关术语、环境准备
一、常用术语在后续使用 AOP 中会用到几个专业术语:连接点、切入点、通知(增强)、切面。分别是什么意思?来看这里有个 User 类,里面有增删改查 4 个方法。public class User { public void add() {} public void delete() {} public void update() {} public...原创 2021-08-03 22:53:00 · 95 阅读 · 0 评论 -
【Spring 从0开始】什么是 AOP?底层原理是?
一、什么是 AOPAOP 就是面向切面编程,是 OOP(面向对象编程)的延续。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序可用性,同时也提高了开发效率。通俗一点说,不用修改原代码,可以给原代码增加新的功能。二、AOP 底层原理AOP 底层原理是使用动态代理。那代理是什么?有动态代理,那是不是还有静态代理?1. 什么是代理?就是为...原创 2021-08-02 23:24:00 · 234 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 完全注解开发,放弃配置文件
通过注解的方式,我们不需要在xml配置文件里进行各种注入配置,只需要开启扫描即可。那如果开启扫描也能通过注解方式,那不就完全不需要配置文件了么?创建配置类创建配置类,替代 xml 配置文件。package com.pingguo.spring5.config;import org.springframework.context.annotation.ComponentScan;im...原创 2021-08-01 16:25:00 · 97 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 基于注解 - 属性注入
基于注解方式进行属性注入,涉及到 4 个注解:@Autowired:根据属性类型,进行自动装配@Qualifier:根据属性名称进行注入,跟 @Autowired 一起使用@Resource:既可以根据类型注入,也可以根据名称注入@Value:注入普通类型属性一、@Autowired现在有这样的一个结构,我要在 service 里注入 dao 对象。1. 添加对象注解给 s...原创 2021-08-01 14:38:00 · 85 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 基于注解 - 创建对象&组件扫描
什么是注解?注解是代码里的特殊标记,格式:@注解名称(属性名称=属性值, 属性名称2=属性值...)。可以作用在:类、方法、属性上面。使用注解的目的:简化 xml 配置,让使用配置更简洁优雅。一、spring 针对 bean 管理中创建对象提供注解@Component@Service@Controller@Repository这 4 个注解功能是一样的,都可以用来创建 be...原创 2021-07-31 23:40:00 · 165 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 基于XML - 外部属性文件
有时候,为了灵活方便,我们会把某些固定的数据存放到文件里,然后去读取里面的内容来使用。比如数据库的连接信息,这些内容就可以放到 properties 文件中,然后使用 xml 配置文件去读取里面的内容,完成需要的注入。这里使用德鲁伊连接池举例,德鲁伊连接池是阿里巴巴开源的数据库连接池项目。一、常规配置方法1. 引入依赖下载一个德鲁伊的 jar 包,放到 lib 下面。然后通过 Fi...原创 2021-07-31 21:00:00 · 75 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 基于XML - 自动装配
什么是自动装配?在之前的内容中,每给属性注入值都要一个个的用 property 标签来完成,比如:<bean id="book" class="com.pingguo.spring5.collectiontype.Book" scope="prototype"> <property name="list" ref="bookList"></pro...原创 2021-07-31 17:50:00 · 148 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - Bean 的生命周期
bean 的生命周期是指,从对象创建到对象销毁的过程。过程如下:通过构造器创建 bean 实例(比如,无参数构造)。为 bean 的属性设置值和对其他 bean 的引用(比如,调用set方法)。调用 bean 的初始化方法(需要进行配置初始化的方法)。bean 可以使用了(比如,对象被获取到了)。当容器关闭,调用 bean 的销毁的方法(需要进行配置销毁的方法)。一、生命周期过...原创 2021-07-31 17:03:00 · 298 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - Bean 的作用域
bean的作用域,其实就是设置创建 bean 的实例是属于单实例,还是多实例。1. 默认单实例默认情况下,创建的 bean 是单实例对象。比如,用之前的代码为例:@Test public void testCollection2() { ApplicationContext context = new ClassPathXmlApp...原创 2021-07-31 11:49:00 · 96 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 工厂bean (FactoryBean)
之前提到的 bean 是我们自己创建的,属于普通类型的 bean。还有一种是工厂 bean,属于 spring 中内置的一种类型。区别是什么?以此配置为例:<bean id="course2" class="com.pingguo.spring5.collectiontype.Course"> <property name="course_name" val...原创 2021-07-31 11:21:00 · 134 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 基于XML,注入集合类型属性
一、定义数组、list、map、set类型属性创建类、定义数组、list、map、set类型属性,生成对应set方法。package com.pingguo.spring5.collectiontype;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.Set;...原创 2021-07-31 09:00:00 · 97 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 基于XML,注入外部bean、内部bean和级联赋值...
一、注入外部 bean如果你要引用外部 bean,就要先注入外部bean。比如常见的web项目中的service、dao 这2层,通过 service 去调用 dao,这个过程就叫引入外部 bean。现在有从左至右的3段代码,分别是 service、dao、dao接口的实现类。现在想要在 service 中调用 dao 里的 update() 方法,用之前传统的方法,可以 new:现在...原创 2021-06-29 23:28:00 · 156 阅读 · 0 评论 -
【Spring 从0开始】IOC容器的Bean管理 - 基于XML,创建对象、注入属性
Bean 管理其实就是指spring 的2个操作:创建对象、注入属性。创建对象在之前的文章里都有操作过,那这个注入属性也很好理解。比如类有一个属性private String userName;,如果我要对这个属性设值,那么这个类可以提供 set() 方法,以供调用。而这个过程,现在也交由 spring 管理,叫做注入属性。spring 对于 Bean 管理有两种方式:基于XML配置文件...原创 2021-06-28 18:38:00 · 111 阅读 · 0 评论