自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 5.定时任务

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候,分析一次前一天的日志信息,Spring为我们提供了异步执行任务调度的方式,提供了两个接口,TaskExecutor接口和TaskScheduler接口,以及两个注解:@EnableScheduling和@Scheduled创建一个ScheduledService@Servicepublic class ScheduledService { @Scheduled(cron = "0/2 * * * * ?") public v

2022-01-26 13:22:10 216

原创 4.邮件任务

邮件发送在我们的日常开发中也非常的多,Springboot帮我们做了支持我们去找一下关于Mail的自动配置类,发现有一个MailSenderAutoConfiguration,点进去@EnableConfigurationProperties({MailProperties.class})有关Mail的配置属性都在MailProperties.class中定义好了@ConfigurationProperties( prefix = "spring.mail")public class

2022-01-26 13:13:51 305

原创 3.异步任务

异步处理还是非常常用的,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。编写方法,假装正在处理数据,使用线程设置一些延时,模拟同步等待的情况新建一个AsyncService类@Servicepublic class AsyncService { public void hello(){ try { Thread.sleep(3000); }

2022-01-26 11:59:28 123

原创 2.配置Swaggger

Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger @Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2); }通过apiInfo()属性配置文档信息private ApiInfo apiInfo(){ Contact contact = new Contact("张三","https://www.baidu.co

2022-01-26 11:43:54 290

原创 1.Swagger简介

前后端分离的项目相对独立且松耦合,但也带来了一个问题,前端或者后端无法做到“及时协商,尽早解决”,这时我们就需要先定义schema,并实时跟踪最新的APISwagger号称世界上最流行的API框架,支持 API 文档 与API 定义同步更新,可以直接运行,在线测试API新建一个SpringBoot-web项目,添加Swagger的启动器 <dependency> <groupId>io.springfox</groupId>

2022-01-26 11:10:09 226

原创 1.微服务概述

什么是微服务微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库微服务架构微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生

2022-01-26 10:40:21 157

原创 10.Rest原理

我们在做请求映射的时候常会用到@RequestMapping注解,点进这个注解,里面的value()和path()这两个方法表示当前请求能处理哪个路径,而method()表示请求方式,这就涉及到Rest风格,我们可以在请求路径相同的情况下,利用请求方式的不同来区分不同的操作○ 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户○ 现在: /user GET-获取用户 DELETE-删除

2022-01-19 15:50:33 232

原创 9.SpringMVC自动配置原理

官方文档相关说明在进行项目编写前,我们还需要知道SpringBoot对SpringMVC还做了哪些配置,包括如何扩展,如何定制我们先去看看SpringBoot的官方文档,点击此处查看If you want to build servlet-based web applications, you can take advantage of Spring Boot’s auto-configuration for Spring MVC or Jersey.如果您想构建基于 servlet 的 Web

2022-01-14 16:52:18 196

原创 8.Thymeleaf

在之前的web项目中,我们的前端页面是用Jsp写的,但SpringBoot默认不支持Jsp,它推荐我们使用Thymeleaf模板引擎和Jsp一样,我们可以写一个Thymeleaf页面模板,在模板里写上表达式,模板引擎就会通过这个模板和后台封装的数据把这表达式解析、填充到我们指定的位置,最后将数据展示出来引入Thymeleaf的场景启动器<dependency> <groupId>org.springframework.boot</groupId&g

2022-01-13 14:52:50 167

原创 7.首页处理

我们继续看源码,找到WebMvcAutoConfiguration这个配置类里EnableWebMvcConfiguration这个类的welcomePageHandlerMapping方法@Bean public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext, FormattingConversionService mvcConversionService,

2022-01-13 09:47:33 173

原创 6.静态资源处理

静态资源映射规则在之前的SpringMVC项目中,要用的静态资源都是导入到web文件夹下的,但我们发现SpringBoot项目中没有web文件夹,那应该放在什么位置呢?SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 这个配置类里面,我们找到WebMvcAutoConfigurationAdapter 这个类,里面有个addResourceHandlers方法,添加资源处理程序@Override public void addResourc

2022-01-12 18:59:19 437

原创 5.SpringBoot自动配置原理

yml配置文件中能写什么配置呢?我们知道SpringBoot自动配置是通过将spring.factories中的xxxAutoConfiguration导入容器,从而使自动配置类生效 ,进行自动配置工作的那么我们就以spring.factories中的HttpEncodingAutoConfiguration(Http编码自动配置)为例分析自动配置原理//这个自动配置类是用于在web应用程序中配置编码的//表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件,如注入该类中的两个bea

2022-01-11 20:25:37 151

原创 4.JSR303数据校验和多环境切换

JSR303数据校验Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理,使用数据校验,可以保证数据的正确性@Component@ConfigurationProperties(prefix = "person")@Validatedpublic class Person { @Email(message="邮箱格式错误") private String name;}运行结果 :default message [不是一

2022-01-11 15:26:12 82

原创 3.yaml配置注入

SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的application.properties语法结构 : key=valueapplication.yml语法结构 :key:空格 valueSpringBoot在底层都给我们自动配置好了,我们可以编写配置文件来修改SpringBoot自动配置的默认值yml语法要求严格,注意空格不能省略,注意层级关系,属性和值的大小写都十分敏感name: lisi字面量直接写在后面就可以 , 字符串默认不用加上双引号或者单引号,注意“ ” 双

2022-01-11 11:54:31 395

原创 2.SpringBoot运行原理探究

Maven项目,我们一般从pom.xml文件探究起首先是父依赖,主要管理项目的资源过滤及插件<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.2</version> <

2022-01-10 20:32:11 215

原创 1.第一个SpringBoot程序

什么是SpringBootSpring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大

2022-01-08 10:49:54 580

原创 8.Json

JSON 是 JavaScript 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串,易于机器解析和生成,并有效地提升网络传输效率对象表示为键值对,数据由逗号分隔,花括号保存对象,方括号保存数组var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串JSON 和 JavaScr

2022-01-07 11:57:21 555

原创 7.整合SSM

环境搭建新建数据库表CREATE DATABASE `ssmbuild`;USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` (`bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',`bookName` VARCHAR(100) NOT NULL COMMENT '书名',`bookCounts` INT(11) NOT NULL COMMENT '数量

2022-01-06 19:33:40 732

原创 6.数据处理

处理提交数据提交的域名称和处理方法的参数名一致http://localhost:8080/user/t1?name=lisi@Controller@RequestMapping("/user")public class UserController { @GetMapping("/t1") public String test1(String name){ return "test"; }}提交的域名称和处理方法的参数名不一致http://local

2022-01-05 16:57:22 258

原创 5.结果跳转方式

ModelAndView设置ModelAndView对象 , 根据view的名称和视图解析器跳到指定的页面视图解析器<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" />

2022-01-05 14:46:12 161

原创 4.Controller及RestFul

控制器Controller负责解析用户的请求并将其转换为一个模型,通常通过接口定义或注解定义两种方法实现实现Controller接口在上个项目的基础上我们删掉HelloController,mvc的配置文件只留下视图解析器新建一个Controller类package com.dream.controller;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc

2022-01-04 20:16:26 284

原创 3.第一个SpringMVC程序

使用配置文件的方式新建一个maven项目并添加对web的支持导入相关Maven依赖<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> &l

2022-01-04 17:41:46 91

原创 2.初识SpringMVC

SpringMVC是一个轻量级的MVC框架,与Spring无缝结合SpringMVC框架以请求为驱动,围绕一个中心Servlet(DispatcherServlet)分派请求及提供其他功能假设用户发出的请求url为http://localhost:8080/SpringMVC/hello,其实就是请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。这个请求最先会被前置控制器(DispatcherServlet)接收拦截并调用处理器映射器(HandlerMapping

2022-01-04 15:03:09 255

原创 1.回顾MVC

MVC是一种架构模式,不同的MVC存在差异,最典型的MVC就是JSP + servlet + javabean的模式Model(模型):模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务View(视图):负责进行模型的展示,一般就是我们见到的用户界面Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示早期的Web开发中,也就是Model1时代,一个项目分为视图层和模型层。客户端发送请求,jsp获取请求参数,调

2022-01-04 10:24:09 158

原创 12.声明式事务

事务的四个属性ACID原子性:事务动作要么全部完成,要么完全不起作用一致性:一旦所有事务动作完成,事务就要被提交隔离性:多个事务同时处理相同的数据时,每个事务隔离开来防止数据损坏持久性:事务的结果被写到持久化存储器中,事务一旦完成,无论系统发生什么错误,结果都不会受到影响在之前的案例中,我们给userDao接口新增删除和增加用户的方法int addUser(User user); int deleteUser(int id);在mapper配置文件中我们故意把delete写错&lt

2021-12-31 15:11:13 483

原创 11.整合MyBatis

搭建测试环境导入相关依赖及静态资源过滤问题处理<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include&g

2021-12-31 11:19:43 181

原创 10.AOP的实现

AOP意为面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护在SpringAOP中,通过通知定义横切逻辑,可以在不改变原有代码的情况下 , 去增加新的功能导入相关Maven依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc&l

2021-12-30 17:25:48 291

原创 9.代理模式

静态代理package com.dream.demo1;public interface Rent { void rent();}package com.dream.demo1;public class Host implements Rent{ @Override public void rent() { System.out.println("房东出租房子"); }}package com.dream.demo1;public c

2021-12-30 10:37:14 67

原创 8.使用注解开发

Bean的实现之前是使用 bean 的标签进行bean注入,但在实际开发中我们一般都会使用注解配置扫描哪些包下的注解<context:component-scan base-package="com.dream.pojo"/>在指定包下编写类,增加注解,将这个类交给Spring管理装配@Component("user")public class User { public String name = "张三";}测试ApplicationContext contex

2021-12-29 17:42:29 161

原创 7.Bean的自动装配

Spring中bean有三种装配机制,分别是在xml中显式配置,在java中显式配置,隐式的bean发现机制和自动装配Spring的自动装配需要通过两个操作来实现,一是组件扫描,spring会自动发现应用上下文中所创建的bean,二是自动装配,spring自动满足bean之间的依赖,也就是我们说的IoC/DI新建实体类package com.dream.pojo;public class Cat { public void shout(){ System.out.print

2021-12-29 15:56:52 88

原创 6.依赖注入

构造器注入已经讲过set注入新建实体类package com.dream.pojo;public class Address { private String address; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Overr

2021-12-28 20:15:34 147

原创 5.Spring配置

<alias name="hello" alias="hello2"/>alias:可为bean设置多个别名<bean id="hello" name="hello3 hello4,hello5;hello6" class="com.dream.pojo.Hello"> <property name="name" value="Spring"/> </bean>bean:java对象id:bean的唯一标识符name:若没

2021-12-28 17:34:53 59

原创 4.IoC创建对象的方式

通过无参构造方法来创建新建User类package com.dream.pojo;public class User { private String name; public User() { System.out.println("user无参构造方法"); } public void setName(String name) { this.name = name; } public void show(){

2021-12-28 16:57:48 137

原创 3.第一个Spring程序

导入相关Maven依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.13</version> </depende

2021-12-28 16:15:42 78

原创 2.IoC基础

IoC原型UserDao接口package com.dream.dao;public interface UserDao { void getUser();}UserDao实现类package com.dream.dao;public class UserDaoImpl implements UserDao{ @Override public void getUser() { System.out.println("获取用户数据"); }

2021-12-28 15:11:52 215

原创 1.初识Spring

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架),由 7 个模块组成,每个模块都可以单独存在,或者与其他模块联合实现Spring Core:为Spring 框架提供基本功能,定义了创建、配置和管理 bean 的方式Spring Context:向 Spring 框架提供上下文信息,是一个配置文件Spring AOP:为应用程序提供事务管理服务Spring DAO:管理异常处理和不同数据库供应商抛出的错误消息Spring ORM:提供了 ORM 的对象关系工具Spri

2021-12-28 11:47:51 168

原创 11.MyBatis中的缓存

MyBatis中的缓存对于经常查询且不经常改变的数据,使用缓存可以减少数据库的交互次数,减少系统开销,提高效率MyBatis可以定制和配置缓存,默认情况下自动开启了一级缓存(本地缓存),我们关闭不了一级缓存是sqlSession级别的缓存,每个sqlSession中的缓存相互独立我们在一次会话中执行两次查询,第一次查出的数据都会被默认放在前会话的一级缓存中,第二次查询要获取相同的数据,就直接从缓存中拿,而没有进行数据库查询,所以SQL语句只查询了一次@Testpublic void testQu

2021-12-27 16:37:59 282

原创 10.动态SQL

动态SQL动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句在写复杂的 SQL 语句时,往往需要拼接,而拼接 SQL 稍微不注意,由于引号,空格等缺失可能都会导致错误。MyBatis 动态SQL,通过 if, choose, when, otherwise,trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而提高SQL 语句的准确性,提高开发人员的效率新建数据库表CREATE TABLE `blog` (`id` varchar(50) NOT

2021-12-27 09:42:47 462

原创 9.一对多的处理

一对多的处理比如一个老师对应多个学生,这种情况的处理方式和多对一类似,也可以按查询嵌套处理或按结果嵌套处理实体类package com.dream.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic class Student { private int

2021-12-25 16:30:59 216

原创 8.多对一的处理

多对一的处理比如多个学生对应一个老师即从学生这边关联一个老师,学生这个实体类属性中包含老师这个对象,那么这种情况下我要查询的学生信息中也包含老师信息,数据库表字段和实体类属性之间应该怎么进行关联,手动映射SQL语句又该怎么写呢新建数据库表CREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=ut

2021-12-25 15:20:33 378

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除