Spring
文章平均质量分 74
解决
加倍努力中
不努力就当个废柴
展开
-
Spring窥探系列之Bean生命周期(100%GPT生成版)
该接口的作用是在 Spring 容器完成 Bean 实例化和属性注入之后,但是在调用 Bean 的初始化方法之前和之后,对 Bean 实例进行自定义的初始化和销毁操作。该类是 Spring Bean Factory 的一个抽象实现,提供了创建 Bean 对象、属性注入、初始化和销毁等方法的默认实现,可以用于定制自己的 Bean Factory 实现。可以在该方法中自定义 Bean 对象的销毁逻辑。: 该方法在 Bean 对象实例化之前被调用,可以在该方法中返回一个代理对象来替代原始的 Bean 对象实例。原创 2023-07-12 11:07:13 · 727 阅读 · 1 评论 -
窥探系列之@Value注入
AutowiredAnnotationBeanPostProcessororg.springframework.beans.factory.support.AbstractBeanFactory#resolveEmbeddedValueorg.springframework.beans.factory.support.DefaultListableBeanFactory#doResolveDependencyorg.springframework.beans.factory.annotation.Au原创 2023-07-11 23:54:54 · 166 阅读 · 0 评论 -
窥探系列之多数据源切换
因此,在事务中使用@DS注解时,可能会出现数据源切换失效的情况,即在事务中切换数据源后,该数据源可能会被后续的操作覆盖掉,导致数据源切换失效。如果使用的是DataSourceTransactionManager事务管理器,那么在事务开始时,该事务管理器会获取一个新的连接,并将该连接绑定到当前线程上。具体来说,当一个事务开启时,事务管理器会获取一个数据库连接,并将该连接和当前线程进行绑定,以便在事务管理器操作数据库时使用该连接。当事务结束后,事务管理器会释放该连接,并将该连接和当前线程的绑定解除。原创 2023-06-13 19:21:54 · 673 阅读 · 0 评论 -
窥探系列之数字证书
一是证书中包含证书的归属人信息,比如域名等,所以即使中间人也去申请CA证书,但是浏览器能够判断收到的证书的归属人不是期望的;二是如果中间人使用自己生成的证书,当浏览器使用CA根证书的公钥去验证中间人证书会失败。篡改证书,使用CA根证书校验时会失败。原创 2023-06-13 11:57:19 · 1004 阅读 · 0 评论 -
从增强器Advisor窥探AOP原理
可以看到,在代理时Spring将所有拦截器添加到调用链List中,然后封装到MethodInvocation对象中。这段代码实现了 Spring AOP 框架中获取一个方法的所有拦截器和动态拦截通知的逻辑。JdkDynamicAopProxy实现了InvocationHandler接口。本来以为Spring嵌套代理,其实只创建了一个代理对象。递归调用拦截器,最后执行被代理类的方法。原创 2023-06-12 16:20:39 · 772 阅读 · 0 评论 -
FeignClient的原理学习
可以看到注解类EnableFeignClients使用@Import注解引入了FeignClientsRegistrar,FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar接口,到这基本明白了,Spring调用ImportBeanDefinitionRegistrar实现类(FeignClientsRegistrar)的registerBeanDefinitions方法,来注册实现类中需要注入的bean定义信息。原创 2023-06-08 10:58:34 · 757 阅读 · 0 评论 -
FeignClientSpecification的注入原理
使用注解注入bean本质上只是给类打上bean标识,Spring会扫描所有带标记的类,然后注册到BeanDefinitionRegistry中,当这个bean被注入时,将会根据bean的定义信息创建bean对象。当Spring创建FeignClientSpecification的bean对象时,会将FeignClientSpecification的BeanDefinition中封装的name和configuration两个对象作为构造FeignClientSpecification bean对象的参数。原创 2023-06-08 10:25:28 · 602 阅读 · 0 评论 -
Post 方法参数写在body中和写在url中有什么区别?
https://www.zhihu.com/question/64312188/answer/370779721解释之前我们先基于Http协议,根据Http的请求方法对应的数据传输能力把Http请求分为Url类请求和Body类请求,Url类请求包括但不限于GET、HEAD、OPTIONS、TRACE 等请求方法。Body类请求包括但不限于POST、PUSH、PATCH、DELETE 等请求方法。 在语义上来说,例如GET请求是查询或者获取服务端的资源的,POST请求是向服务器push数据或者创建资源的。转载 2020-10-09 20:53:26 · 10035 阅读 · 0 评论 -
MapStruct填坑 -- 重新生成实现类
mapstruct是一个编译期生成实现类的对象映射工具,但是坑也非常多。网上搜索最多的是它和lombok框架同时使用时的一些bug。但是有一个bug我是在网上搜了好多都没有解答。这个bug也跟mapstruct在编译期生成实现类有关,就是当我们去修改entity(或者称dto)的字段时,它并不会生成新的实现类,这时需要我们把原来那个实现类删除,重新编译。(注意路径)...原创 2020-09-24 19:31:49 · 6512 阅读 · 0 评论 -
servlet 返回数据乱码(或都是问号???)
解决方法response.setCharacterEncoding("utf-8");//告诉浏览器返回的数据是json格式,且以utf-8格式解码response.setContentType("application/json;charset=utf-8");//response.setHeader("Content-type", "text/json;charset=UTF-8");PrintWriter writer = response.getWriter(); //必须在setChara原创 2020-09-22 18:32:50 · 867 阅读 · 0 评论 -
[springboot] 获取控制器参数
从发送http请求,到执行控制器,这个过程中会创建处理器用于包装控制器,为什么呢,因为执行控制器需要把http参数转换成控制器所需要的参数,那么这一个步骤是由处理器来做到的,处理器会读入http参数以及上下文参数,传递给控制器。无注解获取参数在没有注解的情况下,Spring MVC 也可以获取参数,而且参数允许为空,唯一的要求是参数名称要和http参数名称保持一致@RequestMappi...原创 2020-05-03 14:14:18 · 208 阅读 · 0 评论 -
[springboot]maven多模块管理
前言随着对java网络技术的深入学习,会遇到更多的新鲜技术、知识,也以为这碰到更多问题。maven多模块管理是我最近学习的内容,刚开始学也找不到头绪,好在有个编程好手朋友,推荐了一些优秀的帖子,学起来顺利多了。不过,目前主要是通过博客来了解maven模块管理的相关技术,至于官方文档当然没看,就留着以后深入学习。这里介绍两章多模块入门的博客贴。maven模块管理maven依赖管理创建完多...原创 2020-05-01 16:50:42 · 569 阅读 · 0 评论 -
[SpringBoot] idea 打包jar、部署到linux、关闭项目
打包idea右侧:MavenProject -》package打包成功后后,生成两个文件测试打包文件jaridea内,打开terminal,输入命令Java –jar jar包名打包成功部署先把jar包传到服务器上,输入以下命令部署项目nohup java -jar jar包完全限定名 --server.port=端口 &部署成功参数说明nohup,...原创 2020-03-21 20:19:38 · 261 阅读 · 0 评论 -
查看tomcat上项目的运行情况及实时日志
在tomcat的logs路径下打开tail -f catalina.out原创 2020-03-05 23:26:51 · 3470 阅读 · 0 评论 -
springboot集成spring session
Spring Session & Redis默认情况下,如果我们使用HttpSession会在内存中保存HttpSession对象,所以当保存的对象多了,便会降低低系统性能,响应缓慢。所以可以考虑,将HttpSession对象的信息保存到redis中,以减少对系统内存的浪费,提高效率。导包如果利用idea生成一个spring application可以省去导包这一步骤。否则<...原创 2020-03-02 22:43:18 · 235 阅读 · 0 评论 -
AOP 之 @DeclareParents的用法
前言最近一直在看Spring框架文档,也对@DeclareParents注释有了初步的了解,所以这篇文章仅提供入门参考。概念通过注释@DeclareParents,可以提供强大的代理功能。那么如何理解这种代理功能呢?如下图所示,B其实就是代理类,用于增强类A的能力(如添加方法实现)。这里可能会有疑惑:为什么不在A类中直接添加想要的功能呢?在面向切面编程(AOP)时,为了避免侵入性,减少对业...原创 2020-03-01 18:46:53 · 1645 阅读 · 2 评论 -
springboot 跳转(html)网页
添加以下依赖(为springboot定制的依赖,完美自动与spring框架整合)<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf --><dependency> <groupId>org.springframew...原创 2020-02-24 16:34:30 · 115 阅读 · 0 评论 -
URL重定向
文章目录加与不加redirect:的区别加与不加redirect:的区别其实加不加redirect:,都可以实现相同的逻辑功能,不同的是加了redirect:后,重定向后会在浏览器地址栏显示重定向后的路径。若想要隐藏重定向路径,可以不加。...原创 2020-02-24 16:10:29 · 386 阅读 · 0 评论 -
Spring + Mybatis 框架整合(ssm)
开言maven + spring mvc项目架构构建,利用intelliJ Idea 快速创建,省去了导包的烦恼。mavenspring mvcmybatis依赖添加 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifac...原创 2020-02-15 13:50:26 · 119 阅读 · 0 评论 -
[Spring MVC] @Configuration 的用法
原文出处:https://www.cnblogs.com/duanxz/p/7493276.html从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContex...转载 2020-02-13 17:30:24 · 4688 阅读 · 0 评论 -
[Spring MVC] 定制消息转换器
消息转换器的主要作用是,将对象转换成响应体。说起来,也是一把辛酸泪,搞了一整天。定制消息转换器,需要继承抽象类AbstractHttpMessageConverter,而且需要指定Content-Type,这一步非常重要,否则该定制消息转换器不会被调用。这一点非常重要,我就是在这一点上,搞了一整天。控制器package org.spring;import org.springframew...原创 2020-02-12 22:00:52 · 171 阅读 · 0 评论 -
[Spring MVC]之BeanNameViewResolver的用法(自定义View)
BeanNameViewResolver(自定义View)BeanNameViewResolver这个视图解析器,用于返回自定义的视图。顾名思义,通过配置后,控制器返回自定义的视图的bean名,即可返回自定义的视图。自定义Viewpackage org.views;import org.springframework.stereotype.Component;import org.sp...原创 2020-02-11 20:46:55 · 1278 阅读 · 0 评论 -
[Spring MVC]@ControllerAdvice注解的用法
简介昨天学习@ControllerAdvice注解时,很可惜Spring MVC中文文档对其的描述很简单,难以理解它的用法。通过百度一翻,最后总结了@ControllerAdvice的以下几种用法:全局异常处理全局数据绑定全局数据预处理文档对其的描述是:@ControllerAdvice是一个组件注解,它使得其实现类能够被classpath扫描自动发现。若应用是通过MVC命令空间或...原创 2020-02-10 15:09:00 · 571 阅读 · 0 评论 -
[Spring MVC]之@ModelAttribute注解的用法
注解方法在同一个控制器中,注解了@ModelAttribute的方法实际上会在@RequestMapping方法之前被调用。注解无返回值方法import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.a...原创 2020-02-09 16:34:01 · 208 阅读 · 0 评论 -
Spring 错误信息集
文章目录未开启矩阵变量(MatrixVariable)的支持未开启矩阵变量(MatrixVariable)的支持错误信息:400 Bad Request - Missing matrix variable 'gender' for method parameter of type String错误分析:@MatrixVariable注解的使用是不安全的,在SpringMVC中默认是关闭对其支...原创 2020-02-09 11:49:32 · 290 阅读 · 0 评论 -
添加Spring MVC框架
一、构建maven项目创建maven项目二、添加Spring MVC框架鼠标右击项目名,这里是原创 2020-02-08 14:43:20 · 436 阅读 · 0 评论 -
[Spring MVC]控制器数据传不到JSP的解决方法
在学习Spring MVC时,出现了一个问题:控制器设置的模型数据传不到JSP页面最后在百度上找到了个可行的方法:在jsp文件顶部,添加以标签及属性<%@ page isELIgnored="false" %>...原创 2020-02-04 11:57:55 · 306 阅读 · 0 评论 -
Intellij IDEA 添加Spring框架的方法
概述Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。S...原创 2020-01-01 17:44:46 · 11868 阅读 · 0 评论 -
Spring框架的控制反转(IOC)如何简单理解
控制反转(IOC)的一个spring框架很重要的特点,那到底什么是控制反转,控制反转有什么用呢?什么是控制反转呢?(百度百科)控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency ...原创 2019-11-17 13:14:43 · 472 阅读 · 0 评论 -
【springDay03】IOC、DI
概念IOC(Inversion Of Controll 控制反转)什么是IOC:对象的依赖关系由容器来建立。DI(Dependency Injection 依赖注入)容器通过调用对象提供的set方法或者构造器来建立依赖关系。注意:IOC时目标,DI 是手段。注入依赖关系set方法注入依赖关系property元素:表示使用set方法来注入依赖关系属性:name属性...原创 2019-07-27 17:40:08 · 149 阅读 · 0 评论 -
【springDay02】作用域、生命周期、延迟加载
day01作用域<!-- scope属性:用来配置作用域: 1:singleton 一个bean只创建、共用一个实例(默认) 2. prototype 一个bean创建多个实例 --> <bean id="s1" class="scope.ScopeBean" scope="prototype"/>package test;im...原创 2019-07-19 21:11:44 · 138 阅读 · 0 评论 -
【springDay01】
导入包spring-webmvc配置文件applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema...原创 2019-07-19 16:19:50 · 165 阅读 · 0 评论