![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开发框架
文章平均质量分 58
Mr_EvanChen
这个作者很懒,什么都没留下…
展开
-
【SpringCloud】application.yml和 bootstrap.yml 区别
1.首先yml和properties文件都是属于配置文件,功能一样。主要是区别于application和bootstrap的加载顺序。Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加载,就像application.yml一样,但是用于应用程序上下文的引导阶段。2.典型场景1...转载 2020-06-28 17:14:31 · 772 阅读 · 1 评论 -
【Mybatis】缓存机制:一级缓存和二级缓存的区别
(镶嵌点:)Sqlsession(接口)的底层是hashmap存储,线程不安全,sqlsessionTemplate是其实现类线程安全的区别:一级缓存的作用域是一个sqlsession内;二级缓存作用域是针对mapper进行缓存.一级缓存:1、第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。得到用户信息,将用户信息存储到一级缓...转载 2020-03-21 10:32:01 · 665 阅读 · 0 评论 -
【Java】设计模式六大原则:开闭原则
目录: 设计模式六大原则:单一职责原则 设计模式六大原则:接口隔离原则 设计模式六大原则:依赖倒置原则 设计模式六大原则:里氏替换原则 设计模式六大原则:迪米特法则 设计模式六大原则:开闭原则开闭原则(Open Close Principle): Software entities (classes, modules, functions, etc...转载 2020-03-05 19:59:50 · 483 阅读 · 0 评论 -
【Spring】定时任务@Scheduled之单线程多线程问题
SpringBoot使用@scheduled定时执行任务的时候是在一个单线程中,如果有多个任务,其中一个任务执行时间过长,则有可能会导致其他后续任务被阻塞直到该任务执行完成。也就是会造成一些任务无法定时执行的错觉。可以通过如下代码进行测试: @Scheduled(cron = "0/1 * * * * ? ") public void deleteFile() throws...转载 2020-01-08 08:41:11 · 14635 阅读 · 4 评论 -
【Spring】退避抖动算法
指数退避的原理是对于连续错误响应,重试等待间隔越来越长。您应该实施最长延迟间隔和最大重试次数。最长延迟间隔和最大重试次数不一定是固定值,并且应当根据正在执行的操作和其他本地因素(例如网络延迟)进行设置。大多数指数退避算法会利用抖动(随机延迟)来防止连续的冲突。由于在这些情况下您并未尝试避免此类冲突,因此无需使用此随机数字。但是,如果使用并发客户端,抖动可帮助您更快地成功执行请求。至于指...转载 2019-12-13 17:52:47 · 940 阅读 · 0 评论 -
【Spring】一个接口有多个实现类,如何指定一个实现类?@Resource、@Autowired、@Qualifier
如果一个接口有2个不同的实现, 那么怎么来Autowire一个指定的实现?举个例子:1、接口:ILayerpublic Interface ILayer{......}2、实现类:ImageLayerImpl ,实现了ILayer接口。@Service("imageLayerImpl")public class ImageLayerImpl impliment...转载 2019-09-20 17:54:51 · 5932 阅读 · 1 评论 -
【Spring】@ResponseBody 和 @RequestBody 的作用
先提一嘴 @RequestMapping(“url”),这里的 url写的是请求路径的一部分,一般作用在 Controller的方法上,作为请求的映射地址。代码:@RequestMapping(value = "/test")//类级别映射,可以没有,一般用于减少书写量public class myController { //方法级别映射,必须有,那么这个方法的访问地址就是/...转载 2019-08-07 17:43:59 · 197 阅读 · 0 评论 -
【SpringBoot】多模块Maven项目创建与配置
最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多个模块。代码中的多模块是用maven管理的,每个模块都使用spring boot框架。之前有零零散散学过一些maven多模块配置的知识,但没自己从头到尾创建和配置过,也快忘得差不多了。这次正好对照着这个项目,动手实践一下,下面我们就开始吧。maven多模块项目通常由一个父模块和若干个子模块构成,每个模块...转载 2019-07-15 19:23:12 · 807 阅读 · 0 评论 -
【SpringBoot】拦截器(HandlerInterceptor)与过滤器(Filter)
一、拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器。这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的。在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象编程的过程中,我们很容易通过继承、多态来解决纵向扩展。但是对于横向的功能,比如,在所有的service方法中开启事务,或者统一记录日志等功能...转载 2019-06-05 17:36:59 · 2597 阅读 · 0 评论 -
【Spring】@Lazy注解
今天主要从以下几方面来介绍一下@Lazy注解 @Lazy注解是什么 @Lazy注解怎么使用 1、@Lazy注解是什么@Lazy注解用于标识bean是否需要延迟加载,源码如下:@Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ...转载 2019-05-27 19:24:41 · 1523 阅读 · 0 评论 -
【Spring】基于注解的AOP(面向切面编程)
AOP(Aspect Oriented Programming),即面向切面编程(也叫面向方面编程,面向方法编程)。其主要作用是,在不修改源代码的情况下给某个操作添加额外的功能。像日志记录,事务处理,权限控制,都可以用AOP来“优雅”地实现,使这些额外功能和真正的业务逻辑分离开来,软件的结构将更加清晰。Spring AOP是基于代理机制的,通过JDK Proxy和CGLIB Proxy两种方法...转载 2019-05-10 16:28:07 · 1537 阅读 · 1 评论 -
【Spring】缓存注解@Cacheable、@CacheEvict、@CachePut详解
一、@Cacheable用法详解1、用在哪里?用在方法或者类上。2、这两种用法有什么区别?用在方法上表示:该方法的返回值将被缓存起来用在类上表示:表示该类的所有方法都支持该注解3、使用后的结果是什么?下次使用相同方法和相同参数调用这个方法的时候将直接从缓存取值,而不需要再次执行该方法。.4、返回值在缓存中怎么存储的?以键值对的方式...转载 2019-04-18 17:27:20 · 534 阅读 · 0 评论 -
【Spring】@Autowired报错Could not autowire. No beans of xxx
问题描述开发工具采用的是IDEA,写了一个DAO接口,在service中注入时,报错:Could not autowire. No beans of xxx。问题原因原因在于DAO接口添加的@Mapper并不是Spring的注解,而是ibatis的注解,并没有声明这个DAO接口作为Spring的Bean,因此Spring不能进行管理,导致注入报错。解决办法只需在DAO接...原创 2018-12-10 19:49:38 · 14814 阅读 · 9 评论 -
【Mybatis】动态SQL之choose、when、otherwise
Mybatis中没有if-else的写法,取而代之的是choose-when-otherwise。choose在最外面,when相当于if,otherwise则相当于else。 <choose> <when test="orderby.field != null and orderby.field != ...原创 2018-11-22 19:28:27 · 838 阅读 · 0 评论 -
【Spring】@Autowired注解Field injection is not recommended
参考文章:http://vojtechruzicka.com/field-dependency-injection-considered-harmful/ 首先对于还不熟悉@Autowired的同学当然也包括我先去看看它到底有什么作用。—自动装配 大体意思就是就是说用了它就可以省去类里面的set/get方法,也不用在xml文件中要注入的类中设置属性,它会根据@Autowir...转载 2018-11-08 20:27:37 · 1193 阅读 · 0 评论 -
【MyBatis】SpringBoot开启驼峰转换功能
数据库用的是postgresql,file表中有个时间字段create_date(没有采用驼峰法),在实体类中是createDate(采用驼峰法)。 当我查询数据时,发现createDate一直是null 于是猜想是不是因为实体与表的映射出了问题,因此在配置文件application.yml中开启mybatis的驼峰功能尝试,果然就有时间了。...原创 2018-11-08 08:43:50 · 4433 阅读 · 0 评论 -
【SpringBoot】vue刷新页面404错误,自定义指向页面
问题描述 将vue项目整合进后端项目,部署服务器后,正常使用没有问题,但是只要刷新当前页面就总是返回404错误,Whitelabel Error Page,This application has no explicit mapping for /error, so you are seeing this as a fallback。上网查看很多原因,有的说是没有配置视图解析器,有的说...原创 2018-11-01 19:17:32 · 6539 阅读 · 0 评论 -
【MyBatis】postgresql中json类型数据问号?问题
问题描述 有个需求是需要判断某个text是否在json类型数据中,因此打算采用?操作符来实现。在Navicat中尝试确实是可以的。如下: 因此,我在mapper文件中就加入如下方法,但运行却报错:org.postgresql.util.PSQLException: 未设定参数值 2 的内容。 <select id="findRuleByDi...原创 2018-09-25 19:23:47 · 1462 阅读 · 1 评论 -
【MyBtis】获取数据插入postgresql后返回的自增id
问题描述 数据库采用的是postgresql,以下面的rule表为例,该表的id设置为自增,那么经常有这样的需求,在执行insert操作后,紧接着需要获取该记录的自增id往中间表中插入数据,或者是再根据id做一些查询之类的。 解决办法 以下两种方法效果一致1、采用selectKey做一个子查询,赋值给属性id,并设置order=“AFTER”让其是在I...原创 2018-09-20 18:02:36 · 4367 阅读 · 0 评论 -
【SpringBoot】linux下Multipartfile上传文件失败
问题描述: 应用部署在linux上,上传文件一直没什么问题,因此很久没理会,结果今天突然发现无法上传文件了,查看日志,发现报错如下:The temporary upload location [/tmp/tomcat.1820759841430624846.8890/work/Tomcat/localhost/ROOT] is not valid] with root cause。...原创 2018-09-10 17:13:18 · 4614 阅读 · 1 评论 -
【MyBatis】去掉 IDEA 中 MyBatis的xml文件局部背景颜色
一、 问题情况mybatis.xml 出现部分背景颜色,如何去掉 二、解决方案第一步:在settings (设置)中 找到inspections(检查)。按照图片中那样去掉两个勾选项(No data sources configured 和 SQL dialect detection) 第二步: 去掉背景本文转载自:https://blog.csdn.ne...转载 2018-09-07 15:42:44 · 867 阅读 · 0 评论 -
【MyBatis】】jdbcType和javaType对应关系
jdbcType和javaType对应关系如下: jdbcType javaType CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal...原创 2018-08-23 19:38:35 · 674 阅读 · 0 评论 -
【MyBatis】动态 SQL
如果有比较复杂的业务,我们需要写复杂的 SQL 语句,往往需要拼接,而拼接 SQL ,稍微不注意,由于引号,空格等缺失可能都会导致错误。 那么怎么去解决这个问题呢?这就是本篇所讲的使用 mybatis 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQ...转载 2018-08-21 18:19:48 · 141 阅读 · 0 评论 -
【Shiro】权限控制注解
Shiro共有5个注解: RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。 RequiresGuest: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject可以是“gust”身份,不需要经过认证或者在原先的session中存在记录。 ...原创 2018-07-16 18:53:10 · 2142 阅读 · 0 评论 -
【MyBatis】#{}和${}的区别
动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。(1)# 将传入的数据当成一个字符串,会对自动传入的数据加一个双引号。如:select * from User where parentid = #{pa...转载 2018-07-10 19:39:30 · 180 阅读 · 0 评论 -
【SpringBoot】Junit单元测试遇到的一些问题
情况 ①@Controllerpublic class FileControllerTest{ @Autowired private FileController fileController; @Test public String testDownload(){ fileController.download("2dd4209286df4f...原创 2018-06-20 20:23:16 · 5456 阅读 · 0 评论 -
【SpringMVC】@RequestParam注解和@PathVariable注解的区别
@RequestParam注解和@PathVariable注解的区别,从字面上可以看出前者是获取请求里边携带的参数;后者是获取请求路径里边的变量参数。(例如:127.0.0.1/user/{userId}?userName=zhangshan,userId是路径上的变量,userName才是请求参数信息)1.@RequestParam注解@RequestParam有三个参数:value:参数名;r...转载 2018-06-06 18:01:50 · 455 阅读 · 0 评论 -
【Spring 】AOP详解
AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的...转载 2018-05-31 19:08:21 · 153 阅读 · 0 评论 -
【SpringBoot】静态资源路径配置
1、静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户通过浏览器直接读取。2、在Springboot中默认的静态资源路径有:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/3、在Springboot中可以直接在配置文件中覆盖默认的静态资源路径的配置信...转载 2018-05-25 11:16:16 · 760 阅读 · 0 评论 -
【MyBatis 】Sql查询in foreach
问题描述:需求是传入String数组进行查询,于是想使用in foreach。一开始是这样写的 <select id="findByMutilClientType" resultType="com.yealink.version.pojo.Version" parameterType="java.util.List"> SELECT * FROM version v ...原创 2018-05-18 11:57:40 · 504 阅读 · 0 评论 -
【Spring 】注解驱动的 Spring Cache
@Cacheable、@CachePut、@CacheEvict①Spring配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema...原创 2018-05-17 18:40:11 · 182 阅读 · 0 评论 -
【SpringBoot】整合Mybatis持久层框架
本项目使用的环境:开发工具:Intellij IDEA 2017.1.3springboot: 1.5.6jdk:1.8.0_161maven:3.3.9额外功能PageHelper 分页插件mybatis generator 自动生成代码插件步骤:1.创建一个springboot项目:2.创建项目的文件结构以及jdk的版本3.选择项目所需要的依赖然后点击finish5.看一下文件的结构...转载 2018-05-11 16:13:08 · 321 阅读 · 0 评论 -
【SpringBoot】整合Shiro权限框架
shiro是一个权限框架,具体的使用可以查看其官网 http://shiro.apache.org/ 它提供了很方便的权限认证和登录的功能. 而springboot作为一个开源框架,必然提供了和shiro整合的功能!接下来就用springboot结合springmvc,mybatis,整合shiro完成对于用户登录的判定和权限的验证. 1.准备数据库表结构 这里主要涉及到五张表...转载 2018-05-09 17:55:06 · 303 阅读 · 0 评论 -
【Redis】Spring集成Redis
①依赖版本Jedis----2.9.0spring-data-redis---- 1.7.2.RELEASEspring----4.3.0.RELEASE可能会碰到什么创建Bean失败、或者什么类找不到的报错,很有可能是这三者的版本不兼容问题造成的。②redis.properties#ip地址redis.hostName=127.0.0.1#端口号redis.port=6379#如果有密码...原创 2018-04-03 18:46:38 · 277 阅读 · 0 评论 -
MyBatis
本文选自知乎上一个回答,觉得作者的思想以及做图都挺好的,故特意摘抄出来,并进行了一些整理。一、如何学习框架学习框架时,心里至少要带着下面的疑问:这个框架是负责哪一块的,用在哪一层? 没有它之前,前辈们如何解决,有什么缺点? 它的出现解决了哪些痛点? 它是否也有什么缺点?二、Mybatis框架按照答题的形式,通过逐一解答上面的提问来理解MyBatis:MyBa...转载 2020-03-09 18:47:23 · 234 阅读 · 0 评论 -
Hibernate
一、Hibernate到底是什么? Hibernate是一个基于元数据的轻量级的ORM框架:(hibernate.cfg.xml) 1、元数据(Meta Data):data about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。 2、轻量级:占用资源少,没有侵入性。(这只是相对而言,翻译 2018-05-22 17:18:53 · 200 阅读 · 0 评论 -
Spring
一、什么是spring框架 Spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用。(applicationContext.xml) a、轻量级:程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性; b、IoC...翻译 2018-04-02 19:12:17 · 147 阅读 · 0 评论 -
SpringMVC
一、什么是SpringMVC框架 Spring 框架提供了构建 Web 应用程序的全功能MVC 模块,其功能和Strtus2,Struts1是类似的,只不过是实现的原理不同而已。其中Struts2是通过过滤器来实现路径和action的映射等控制流转功能,而Struts1和SpringMVC则是通过最传统的servlet来实现对其代码封装的。但是都是非常相似的MVC流程框架。(spr原创 2017-04-09 19:54:47 · 243 阅读 · 0 评论 -
Struts2
一、什么是Struct2 Struts是一个轻量级的MVC流程框架,轻量级是指程序的代码不是很多,运行时占用的资源不是很多,MVC流程框架就是说它是支持分层开发,控制数据的流程,从哪里来,到那里去,怎么来,怎么去的这样一个框架.(web.xml) Struts框架一共为我们提供了35个拦截器,其中默认的拦截器有18个,框架访问action的异常处理,配置信息处理,转发重定向翻译 2017-04-09 11:09:27 · 333 阅读 · 0 评论