spring
CoderOu
一个相信努力就会有结果的程序员,以兴趣驱动技术!
------ CoderOu
展开
-
spring中,使用事件发布功能
自定义事件import org.springframework.context.ApplicationEvent;/** * @Author osy * @Date 2022/1/30 * @Description: TODO **/public class MyEvent extends ApplicationEvent { /** * Create a new {@code ApplicationEvent}. * * @param source.原创 2022-01-30 10:14:38 · 192 阅读 · 0 评论 -
【批处理统一抛异常】对于批处理,我们可以自定义一个异常,然后里面设置一个集合,直到最后,如果有内容,则统一抛出异常
看spring源码得到的一种编程思想:代码如下: @Override public void validateRequiredProperties() { // 先定义一个异常, MissingRequiredPropertiesException ex = new MissingRequiredPropertiesException(); for (String key : this.requiredProperties) { // 如果有异常的,先将其加入到异常中的某个集合中去,原创 2022-01-29 00:22:23 · 526 阅读 · 0 评论 -
使用springboot启动监听器ApplicationContextInitializer实现外部jar包设置BeanNameGenerator,解决控制层beanName冲突问题
解决方案直通车注:如果不看解决思路,只看解决方案的,可以滚动到最后面查看解决方案!最新在搭建springcldoualibaba微服务架构,由于习惯了之前的写法(控制层将后台,APP端,小程序端,公众号端分包管理,所以同一个业务的控制器,又懒得每个控制器指定一个名字,对于spring来说,类名一样,那么名字就一样,则会启动报错),则自定义了BeanNameGenerator,之前对于单体springboot项目来说,指定这个很简单,如下所示@SpringBootApplication(nameGen原创 2022-01-12 12:22:44 · 958 阅读 · 1 评论 -
Spring源码学习一:spring核心底层原理解析
Bean的创建生命周期:UserInfoService.class-->无参数构造方法(推断构造方法)-->普通对象-->依赖注入(属性赋值)-->初始化前(调用@PostConstruct的方法)-->初始化(调用实现了InitializingBean的afterPropertiesSet()方法)-->初始化后(AOP)-->代理对象(如果有AOP)-->Bean1、@PostConstruct:在bean的方法中,如果方法上面有此注解,在bean原创 2021-10-16 15:23:17 · 144 阅读 · 0 评论 -
Springboot整合MyBatis, yml配置,超详细从mybatis-spring-boot-starter根据源码进行配置,MybatisProperties类中的属性【源码版】)
都知道springboot整合第三方框架,我们开发者使用的时候,大部分都是只需要在pom文件中导入相关的start依赖即可,springboot提供的start能够无缝的整合第三方框架,今天我们就来看一下mybatis-spring-boot-starter中的自动装配。如果对springboot的启动器不清楚的,可以看一下我的首先我们看一下mybatis-spring-boot-starter这个依赖他帮我们管理了哪些依赖<?xml version="1.0" encoding="UTF-8"原创 2020-06-30 14:04:57 · 2876 阅读 · 0 评论 -
Springboot整合MyBatis(六:Mybatis的xml配配置文件,详细配置之类对象工厂(objectFactory)查询是创建对象实例操作一下)
每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认无参构造方法,要么通过存在的参数映射来调用带有参数的构造方法。 如果想覆盖对象工厂的默认行为,可以通过创建自己的对象工厂来实现这是官网对其做的一个解释,说的意思是:我们在通过select语句查询数据库时,查询的结果集会映射到我们指定的javaBean上面。比如查一个集合List,那么集合里面的每一个元素在创建实例的时候,如果不设.原创 2020-06-27 23:21:03 · 404 阅读 · 0 评论 -
Springboot整合MyBatis(五:Mybatis的xml配配置文件,详细配置之类型处理器(typeHandlers(json字符串映射实体)))
MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。提示 从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。你可以重写已有的类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。 具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.ap原创 2020-06-27 22:39:17 · 1205 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序 十二Spring Web MVC 之ConfigurableWebBindingInitializer 初始化参数绑定配置】)
这节来说springboot中的初始化参数配置,使用过SSM的都知道,springmvc中的初始化参数配置是可以通过@InitBinder来实现参数初始化配置,示例:以去除字符串前后空格为例:package com.osy.config;import com.osy.editorregistrar.ZyDateEditor;import org.springframework.beans.propertyeditors.StringTrimmerEditor;import org.spring原创 2020-06-22 14:27:56 · 444 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【十一Spring Web MVC 之WebMvcConfigurer(addViewControllers方法,配置预先处理控制器,比如:404)】)
addViewControllers是预先配置一些没有逻辑的控制器,后面可能根据一些情况,然后转发到这里,这里就简单使用一下吧,使用的情况应该不是很多。package com.osy.config;import com.osy.annotation.AdminController;import com.osy.annotation.AppController;import org.springframework.context.annotation.Bean;import org.springf原创 2020-06-21 21:08:11 · 803 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【十Spring Web MVC 之WebMvcConfigurer(addCorsMappings方法,配置跨域请求处理。)】)
跨域这个词,我相信在前后端分离项目中,应该是比较常见的一个词语,跨域具体我这里就不细说了,直接上代码看看springboot中如何配置跨域的:(代码中注释很详细)package com.osy.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class WebMvc原创 2020-06-21 20:48:25 · 498 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【九Spring Web MVC 之WebMvcConfigurer(addResourceHandlers方法,添加静态资源路径映射)】)
这个比较常用,配置静态资源与请求地址映射,使得springmvc不对其进行拦截,并且能够快速找到:代码如下:package com.osy.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class WebMvcConfiguration { @Bean原创 2020-06-21 20:33:24 · 2713 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【八Spring Web MVC 之WebMvcConfigurer(addInterceptors方法,添加生命周期拦截器)】)
我们在项目中,有时候需要监听一下从发出请求到后台处理渲染页面完成这一时间段内的生命周期,并根据实际业务加以限制,比如比较常用的就是拦截所以验证是否登录。那么springmvc给我们提供了添加自定义生命周期拦截器的配置,那就是addInterceptors,那么我们就来学习一下他的使用吧。1、创建配置类,并且通过注解@Bean的方式返回WebMvcConfigurer加入到spring容器里面package com.osy.config;import com.osy.annotation.AdminC原创 2020-06-21 14:30:39 · 3870 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【七Spring Web MVC 之WebMvcConfigurer(configureContentNegotiation方法,内容协商机制)】)
今天来说说内容协商机制。内容协商机制这个太专业的名称,说下来,头一次听的话,估计是无法理解他其中的含义的。那么我这里就用大白话说一下吧。就是客户端向服务端发送一个请求,然后服务端给客户端返回什么格式的数据的,是需要两端进行协商的,既然是协商,那么他们有什么协议或者规则呢?下面一探究竟:一般现在服务端返回的数据基本都是json格式的数据,以前返回的是xml,那么现在如果要返回xml格式的数据,springmvc也是提供得有方法的。@RequestMapping系列注解中produces可以指定返回原创 2020-06-21 12:05:39 · 1703 阅读 · 5 评论 -
Springboot官网学习(7、Web应用程序【六Spring Web MVC 之WebMvcConfigurer(configurePathMatch方法,给控制器加上统一前缀)】)
WebMvcConfigurer是springMvc提供的一个可以扩展的配置springmvc的,那么在springboot中如何使用呢?springboot官网提到WebMvcConfigurer是配置跨域Cors引出的:官方实例:@Configuration(proxyBeanMethods = false)public class MyConfiguration { @Bean public WebMvcConfigurer corsConfigurer() {原创 2020-06-20 23:11:52 · 3679 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【五Spring Web MVC 之模板引擎以及静态资源】)
之前我们写的项目中,使用SSM中,我们的静态资源需要我们在配置文件中进行配置的,但是springboot的约定大于配置的理念,就节省了我们去手动配置,难么他约定的在哪里,然后springmvc不进行拦截呢?默认情况下,Spring Boot从类路径中名为/static(/public或/resources或/META-INF/resources)的目录或根目录提供静态内容ServletContext。它使用ResourceHttpRequestHandlerSpring MVC中的from,因此您可以通原创 2020-06-20 22:00:51 · 123 阅读 · 3 评论 -
spring自带的jdbcTemplate的BeanPropertyRowMapper在数据库字段映射到实体时,null映射成为默认值
公司开发一直都是使用的spring自带的jdbcTemplate,虽然拼接sql比较麻烦,但是个人觉得使用起来比较灵活,一些复杂的sql可以通过java轻松来进行组装。但是有一个比较致命的问题就是,有些基本数据类型,比如int,long,double之类的,如果数据库为空,那么就会报异常,解决方案一: 将数据库设置默认值,这样能够解决一部分问题,对于left join 等链接查询的,如果链接的不存在,那么也会出现同样的问题,问题得不到完全解决;解决方案二: 使用基本数据类型的封装类,使用封装类有比较多原创 2020-06-10 10:17:18 · 1920 阅读 · 1 评论 -
springmvc实现全局参数绑定去除前后空格,使用@InitBinder初始化绑定注解
在公司做项目的时候,由于前期项目没有规划好,导致在做查询的时候,用户复制过来进行查询的大多前面后空格,然后不注意就查不出来,使客户有一种系统有问题的感觉,比较头疼。由于之前对springmvc理解不是很透彻,想过在实体的get方法或者set方法做处理,在get或者set属性时候去除空格,项目使用的是lombok,参照了一些文档,试图修改lombok在生成get或者set的方法,最后未果。后面想了一下,springmvc参数绑定原理,觉得springmvc可能提供了这方面的扩展,所以就按照springmv原创 2020-06-10 09:42:47 · 1021 阅读 · 1 评论 -
spring的异步接口使用
spring的异步接口: 我们一般的项目,都是放置于tomcat下面,在tomcat下面的serve.xml配置文件中说道: The connectors can use a shared executor, you can define one or more named thread pools。 大概的意思就是可以在此处定义一个或者多个线程次,然后下面有一个example: <...原创 2019-07-17 14:44:57 · 623 阅读 · 0 评论