![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
FlyYant
码它!!!
展开
-
自定义maven仓库依赖
这里模拟一个自动配置的自定义新建空项目,随后在空项目中新建2个springboot模块在flyyant-hello-spring-boot-starter中引入flyyant-hello-spring-boot-starter-configure的依赖 <dependency> <groupId>com.flyyant</groupId> <artifactId>flyyant-hello-spr原创 2021-08-03 10:53:27 · 325 阅读 · 1 评论 -
application.properties/application.yml查找配置文件位置
配置文件application.properties/application.yml可以放在:classpath根目录classpath根目录下的config目录下jar包当前目录jar包当前目录下的config目录下/config子目录的直接子目录由上往下加载,最后加载的生效基本上我们都是放在classpath根目录下的,这里测试第二条:首先在根目录下application.properties中配置:server.port=8888然后我们在resource路径下新建co原创 2021-08-03 09:35:24 · 6186 阅读 · 1 评论 -
数据访问2
使用druid数据源(德鲁伊)1、druid官方github地址https://github.com/alibaba/druid整合第三方技术的两种方式自定义找starter2、自定义方式创建数据源 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <原创 2021-07-30 10:57:42 · 67 阅读 · 1 评论 -
数据访问1
标题1、SQL1、数据源的自动配置-HikariDataSource1、导入jdbc场景 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <depend原创 2021-07-30 10:00:18 · 105 阅读 · 0 评论 -
嵌入式Servlet容器
切换嵌入式Servlet1. 切换嵌入式Servlet1. 默认支持的WebServer1. Tomcat、Jetty、Undertow2. ServletWebServerApplicationContext 容器启动寻找ServletWebServerFactory 并引导 创建服务器3. 切换服务器原理1. Springboot应用启动发现当前是Web应用,Web场景包-导入tomcat2. Web应用会创建一个web版的ioc容器 ServletWebServerApplicat原创 2021-07-29 10:55:19 · 557 阅读 · 0 评论 -
web原生组件的注入(Servlet、Filter、Listener)
1、使用Servlet API1. @ServletComponentScan(basePackages = "com.flyyant.demo.uploadfile");制定原生Servlet组件都放在那里2. @WebServlet(urlPatterns = "/my");效果:直接响应,没有Spring的拦截器拦截3. @WebServlet(urlPatterns = "/my")public class MyServlet extends HttpServlet { @Ove原创 2021-07-28 16:38:48 · 168 阅读 · 0 评论 -
springboot错误处理之自定义异常处理
自定义错误页error/404.html error/5xx.html;有精确的错误状态码页面就匹配精确,没有就找4xx.html,如果都没有就触发白页@ControllerAdvice + @ExceptionHandler处理异常:底层是ExceptionHandlerExceptionResolver支持的/** * 处理整个web controller 的异常 */@ControllerAdvice@Slf4jpublic class GlobalExceptionH原创 2021-07-28 11:15:12 · 449 阅读 · 0 评论 -
springboot错误处理之异常处理步骤
1、执行目标方法,目标方法运行期间有任何异常都会被catch、而且标志当前请求结束;并且用dispatchException2、进入视图解析流程(页面渲染)processDispatchResult(processedRequest.response,mappedHandler,mv,dispatchException);3、mv = processHandlerException; 处理handler发生的异常,处理完成返回ModelAndView(1)遍历所有的handlerExceptionR原创 2021-07-28 11:10:55 · 243 阅读 · 0 评论 -
异常处理之错误处理
错误处理默认情况下,Springboot提供/error处理所有错误的映射对于机器客户端,他将生成json响应,其中包含错误,http状态和异常消息的详细信息。对于浏览器客户端,响应一个“whitelabel”错误视图,以http格式呈现相同的数据。要对其进行自定义,添加view解析为error要完全替换默认行为,可以实现ErrorController并注册该类型的Bean定义,或添加ErrorAttributes类型的组件以使用现在机制但替换其内容error/下的4xx,原创 2021-07-27 17:14:39 · 152 阅读 · 1 评论 -
springboot源码之文件上传
文件上传原理文件上传自动配置类–MultipartAutoConfigeration-MultipartProperties自动配置好了 StandardServletMultipartResolver 【文件上传解析器】原理步骤:请求进来使用文件上传解析器判断(isMultipart)并封装(resolveMultipart,返回MultipartHttpServletRequest)文件上传请求参数解析器来解析请求中的文件内容封装成MultipartFile将Request中文件信息封装原创 2021-07-26 16:46:11 · 94 阅读 · 0 评论 -
拦截器原理
根据当前请求,找到HanlderExecutionchain[可以处理请求的handler以及handler的所有拦截器]先来顺序执行所有拦截器的preHandle方法如果当前拦截器preHandle返回为true,则执行下一个拦截器的preHandle如果当前拦截器preHandle返回为false,直接倒序执行所有已经执行了的拦截器的afterCompletion方法;如果任何一个拦截器返回false,直接跳出不执行目标方法所有拦截器都返回true,执行目标方法倒序执行所有拦截器的p.原创 2021-07-23 16:49:25 · 64 阅读 · 0 评论 -
springboot数据响应请求之内容协商
根据客户端接收能力不同、返回不同媒体类型的数据导包:<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId></dependency>使用postman测试返回json或xml只需要改变请求头中的Accept字段,Http协议中规定的,告诉服务器本客户端原创 2021-07-22 15:53:08 · 375 阅读 · 3 评论 -
springboot数据响应之HttpMessageConverter原理
HttpMessageConverter看是否支持将此class类型的对象,转为MediaType类型的数据默认的MessageConverter0-只支持Byte类型1-String2-String3-Resource4-ResourceRegion5-6-MultiValueMap7-True8-True9-支持注解方式xml处理最终是MappingJackson2HttpMessageConverter 把对象转换为JSON(利用底层的jackson的objectMapp.原创 2021-07-22 15:43:47 · 297 阅读 · 0 评论 -
springboot响应处理之数据响应自动转化为json数据
原理:返回值解析器返回值处理器先判断是否支持这种类型的返回值如果支持在调用返回值处理器handleReturnValue进行处理RequestRespnseBodyMethodProcessor可以处理返回值标了@ResponseBody注解的:利用MessageConverters进行处理,将数据写为json内容协商(浏览器默认会以请求头的方式告诉服务器他能接收什么样的内容类型)服务器最终根据自己自身的能力,决定服务器能生产出什么样的内容类型的数据Springmvc会挨个遍历所有容原创 2021-07-22 10:56:51 · 1271 阅读 · 0 评论 -
Springmvc到底支持哪些返回值
1.View2.ModelAndView3.Model4.ResponseEnity5.ResponseBodyEmitter6.StreamingResponseBody7.HttpEntity8.HttpHeaders9.Callable10.DeferredResult11.ListenableFuture12.CompletionStage13.WebAsyncTask14.标注@ModelAttribute注解,并且返回的是对象15. 标注@ResponseBody注解原创 2021-07-21 17:16:39 · 114 阅读 · 0 评论 -
请求处理之自定义类型参数
自定义类型参数 封装pojoServletModelAttributeMethodProcessor 这个参数处理器支持不是简单类型WebDataBinder(web数据绑定器)将请求参数的值绑定到指定的javabean里面。WebDataBinder利用它里面的Converters将请求数据转成指定的数据类型。再次封装到javabean中。GenericConversionService:在设置每一个值的时候,找它里面的所有converter哪个可以将这个数据类型(request带来的参数的原创 2021-07-21 17:15:52 · 211 阅读 · 0 评论 -
请求处理之复杂参数
请求时,使用的Map、Model(map、model的值都会放入request的请求域中,通过map的put和model的setAttribute方法设置值进行查看)Map、Model类型的参数会返回mavContainer.getModel(); 来获取值 ----->BindingAwareModelMap是Model也是Map目标方法执行完成:将所有的数据都放在ModelAndViewContainer;包含要去的页面地址View,还包含Model数据最终将model中的所原创 2021-07-21 17:13:15 · 363 阅读 · 0 评论 -
springboot参数处理原理
1、HandlerMapping中找到能处理请求的Handler(Controller.method())2、为当前Handler找一个适配器HandlerAdapter,RequestMappingHandlerMapping0-支持方法上标注了@RequestMapping1-支持函数式编程原创 2021-07-21 11:31:14 · 73 阅读 · 0 评论 -
springboot-controller层方法注解
1@PathVariable() //路径变量使用@GetMapping(“/car/{id}”)public String getCar(@PathVariable(“id”)Integer id){ return “ok”;}如果有两个String类型的路径变量,可以使用map接收Map<String,String>,括号里不需要写任何,是且只能是两个String2@RequestHeader() //获取请求头,括号里是请求头信息的key值,使用Map<Stri原创 2021-07-21 11:29:29 · 846 阅读 · 0 评论 -
Rest映射请求
Delete和put表单请求需要使用method=”post”并且添加一个隐藏的标签<input name=”_method” type=”hidden” value=”DELETE” 或 ”PUT”再在yml文件中添加:Spring: Mvc: Hiddenmethod: Filter: Enabled: true(默认为false)只有表单需要这样,客户端不需要配置直接放行修改_method的方法:新建类:WebConfig在其中定义HiddenHttp原创 2021-07-21 09:05:29 · 73 阅读 · 0 评论 -
springboot静态资源
1.静态资源放在类路径下:/static or /public or /resources or /META-INF/resources访问:当前项目根路径/+静态文件名2.原理:静态映射/**请求进来,先去controller看能不能处理,不能处理的所有请求又交给静态资源处理器。静态资源也找不到就会4043.访问静态资源默认无前缀4.需要的话在yml文件中配置Spring: Mvc: Static-path-pattern: /res/** //这个会导致welcome 欢迎页、网原创 2021-07-21 08:51:59 · 93 阅读 · 2 评论 -
Yaml语法
Kv键值对:K1: v1集合:K: {k1:v1,k2:v2,k3:v3}或K: K1: v1 K2: v2 K3: v3Array、list、queue: K: [v1,v2,v3]或K: - v1 - v2 - v3Yml中单引号会将\n作为字符串输出、双引号会将\n作为换行输出双引号不会转义、单引号会转义Yml的编写自定义内容的提示导入pom<dependency> <groupId>org.springframework原创 2021-07-21 08:43:46 · 115 阅读 · 0 评论 -
springboot底层注解(1)
1@ImportResource注解当有很多xml文件配置的容器注入想要生效在config.java中可在java文件中使用该注解、属性为“classpath:***.xml”2@ImportResource(“classpath:***.xml”)自定义的application中的东西可以使用3@Component@ConfigurationProperties(prefix=””)注解绑定并注册spring容器或@EnableConfigyrationProperties(*原创 2021-07-19 17:30:05 · 75 阅读 · 2 评论 -
springboot常用pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <arti.原创 2021-07-19 09:25:57 · 347 阅读 · 0 评论 -
传入参数自动生成数据库(简易学习版)
今天由于业务要求,写了一个自动生成数据库,其实网上一大堆,但有些不适用,cv多了自己也能写点东西了,仔细琢磨了一下,我打算从sql语句入手,也就是通过拼接sql语句然后执行sql语句就可以实现,这里我并没考虑不到sql注入的问题,毕竟是简易版,但为了满足需求后续会继续更新这部分代码,废话不多说了,步入正题。直接上代码,写了一部分注解public class GenSqlUtil { static Connection con = null; static String url = "jd原创 2021-04-08 16:31:29 · 382 阅读 · 0 评论 -
关于springboot项目部署在tomcat上
首先掏出你已经成型的springboot项目开始准备部署在tomcat的事宜大家知道 springboot内置了tomcat,因此我们在部署的时候需要对springboot的配置文件做一些小修改,来看,我这个项目的名字叫做demo,首先打开springboot的启动类需要他继承SpringBootServletInitializer然后重写他的configure方法到这里,启动类的修改已经完成随后我们再看pom文件第一步,在你的项目id和版本、项目名字的位置加上打包方式<packa原创 2021-03-18 08:32:41 · 685 阅读 · 0 评论