- 博客(120)
- 收藏
- 关注
原创 shiro Filter加载和执行 源码解析
在使用若依框架(前后端不分离包含shiro安全框架)时,发现作者添加了验证码、登录帐号控制等自定义过滤器,于是对自定的过滤器加载和执行流程产生疑问。下面以验证码过滤器为例,对源码解析。
2023-12-10 00:35:29 966 1
原创 mybatis和mybatisplus中对 同namespace 中id重复处理逻辑源码解析
同事在同一个mapper.xml (namespace相同),复制了一个sql没有修改id,正常启动项目。但是我以前使用mybatis的时候如果在namespace相同情况下,id重复,项目会报错无法正常启动,后来看代码发现,是mybatisplus处理了id重复,项目也能正常启动。
2023-12-08 18:08:30 959
原创 spring @Autowired 和 @Qualifier 配合使用实现按名称属性赋值源码
(1)、接着上篇博客AutowiredAnnotationBeanPostProcessor中postProcessPropertyValues -> metadata.inject -> element.inject -> beanFactory.resolveDependency -> doResolveDependency -> findAutowireCandidates -> isAutowireCandidate,
2023-12-01 17:26:33 540
原创 mybatis 使用if 判断数值型
mybatis 中 动态if 使用ognl表达式判断。当对象是Number类型,当传值为0时会被解析成false,否则为true
2023-06-16 11:16:14 878
原创 RocketMq 同组消费者 自动设置InstanceName
此方法的切入点是DefaultRocketMQListenerContainer类创建过程中,使用后置处理器设置instanceName。
2023-06-13 14:50:50 1615
原创 Spring 循环依赖代码分析
一、说明:1、当组件是单例并使用setter给属性赋值时不会出现循环依赖。如果组件不是单例或用构造器赋值都会出现循环依赖错误。2、一级缓存:singletonObjects二级缓存:earlySingletonObjects三级缓存:singletonFactories二、代码:代码执行流程:contextLoader->configureAndRefreshWebApplicationContext->wac.refresh();->finishBeanFactory
2021-04-23 17:26:21 225
原创 git 从远程分支下载到本地分支
以从http://git.xxx.com/test.git上拉去fast分支为例:1、新建空文件夹2、初始化gitgit init3、与远程仓库建立连接命令:git remote add origin <远程git地址>例如:git remote add origin http://git.xxx.com/test.git4、把远程分支拉去到本地命令:git fetch origin <分支名称>例如:git fetch origin fast5、在本地建立
2021-03-17 09:57:49 8145
原创 vue 路由跳转到同一个页面,页面刷新问题
问题:在当前页面,添加参数再次跳转当前页,两个**不同参数**的请求,跳转到同一个页面,第二次请求出的数据不刷新,还是显示第一次的数据。解决办法:在页面中添加 watch :{ '$route': function (to, from) { this.loadData(); } },...
2021-03-11 17:32:03 2772
原创 mybatis 在增量热加载
application.yml中mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: mybatis/**/*Mapper.xml typeAliasesPackage:**.domain mapper: reload: true本例子是在springboo
2021-03-05 09:32:50 272 3
原创 vue 子组件dialog如何每次打开的时候都重新create
一、问题描述父组件中包含dialog子组件,每次刷新父组件时,子组件create都会执行,当dialog弹出时,dialog中create不再执行。想达到的效果是,父组件刷新不影响子组件,当dialog弹出时,dialog中的create才执行。二、问题解决办法添加v-if如下所示:<image-dialog :imageSelectVisible.sync="imageSelectVisible" v-if="imageSelectVisible"></image-dialog&
2021-03-05 09:28:47 4732 4
原创 常用postProcessor及执行顺序
一、常用postProcessor1、BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor例子:MapperScannerConfigurer作用:扫描配置路径下bean,添加到IOC容器。invokeBeanFactoryPostProcessors执行 BeanDefinitionRegistryPostProcessor->postProcessBeanDefinitionRegistryMapp
2021-02-01 10:07:24 2379
原创 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for
1、出错内容开发时,遇到返回给前台一个JSON报错的问题。com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class xxx and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (th
2021-01-12 16:47:08 8265
原创 java8对 List集合常用处理方法
1.for循环list.forEach(item -> {list中的每个item元素做指定的操作//item.setState(0);//item.setRemark("");});2.去重List list = Arrays.asList(“AA”, “BB”, “CC”, “BB”, “CC”, “AA”, “AA”);long l = list.stream().distinct().count();// 3List newList = list.stream().disti
2021-01-08 10:15:25 908
原创 springboot中DispatcherServlet实例化
1.问题开发中我在找DispatcherServlet 中initStrategies里面initHandlerMappings执行时机,在spring+springMvc框架中时,发现在web容器启动的时候,DispatcherServlet中的initHandlerMappings 就会执行,但是在springboot中发现,在第一次请求的时候initHandlerMappings 才会执行,经过查阅发现,这与servlet配置有关。2.结论1.DispatcherServlet 看继承关系可以发
2021-01-08 09:25:18 933
原创 spring @ConfigurationProperties的用法
如果有大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值。具体使用方法如下:1.创建AutoConfigProperty类方法一:@ConfigurationProperties(prefix="auto")@Componentpublic class AutoConfigProperty { String name; public
2020-10-24 13:29:20 1246
原创 vue 父子控件 相互通讯
1、父组件可以使用 props 把数据传给子组件。2、子组件可以使用 $emit 触发父组件的自定义事件。3、兄弟组件可以使用vm.$emit( event, arg ) 一,父传子//父组件:parent.vue<template> <div> <child :vals = "msg"></child> </div></template><script>import chi
2020-10-22 21:10:37 187
原创 vue 代理解决跨越方法
一、什么是跨域跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。列子:#协议跨域http://a.abc.com访问https://a.abc.com;#端口跨域http://a.abc.com:8080访问http://a.abc.com:80;#域名跨域http://a.abc.com访问http://b.abc.com;二、本地开发解决跨域方法在 vue.config.js 中配置devServermodule.
2020-10-22 13:59:33 2994
原创 mybatis 的mapper.xml修改后无需重启 热部署
application.properties 中添加配置mybatis.mapper.reload=true。如果不想让热部署生效mybatis.mapper.reload=false@Componentpublic class MapperHotDeployPlugin { protected final Log log = LogFactory.getLog(getClass()); @Value("${mybatis.mapper-locations}") private
2020-10-21 13:59:59 3578
转载 Vue 中 Promise 异步和同步 的使用
<template> <div class="app-container"> <h1>商品信息</h1> <div class="block"> 测试Promise: <div> 操作人{{who}},改变了商品名称:{{merchandiseName}} <el-button @click="changeMerchandiseNameSync" type="prim
2020-10-20 21:36:35 1659
原创 vue 中 Promise 使用方法
1. Promise 基本概念:Promise是一个构造函数,所以可以 new 出一个Promise的实例;在Promise上有两个函数 resolve (成功之后的回调函数)和 reject (失败后的回调函数);在Promise构造函数的prototype属性上,有一个 .then() 方法。所以只要是Promise构造函数创建的实例,都可以访问到 .then()方法;Promise表示一个一步操作,每当我们new一个Promise的实例,这个实例就代表具体的 异步 操作。Promise创建
2020-10-20 21:23:56 30537 3
原创 vue router传参及接受参数方式
vue传参方法一1,路由配置{path: ‘/describe/:id’,name: ‘Describe’,component: Describe}2,使用方法// 直接调用$router.push 实现携带参数的跳转 this.$router.push({// 这个id是一个变量,随便是什么值都可以 path: /describe/${id}`, })3,获取方法(在describe页面)$route.params.id使用以上方法可以拿到上个页面传过来的id
2020-10-18 20:36:19 5914
原创 vue的数组循环和对象循环
数组循环:<!-- item值 index下标 --><div id="app"> <ol> <li v-for="(item,index) of arr"> {{item}} {{index}} {{item.name}} <!-- item是arr下的对象,取对象下对应值 --> </li> </ol></div>对象循环:&
2020-08-21 08:12:50 466
原创 maven 打包 出现 Please refer to XXXX for the individual test results
1、maven 打包的时候错误提示Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project XXXX: There are test failures.Please refer to D:\Others\XXXX\target\surefire-reports for the individual test results.2、解决办法添加
2020-08-21 08:08:12 5305
原创 vue router跳转页面后刷新 跳转后的页面
一、 背景点击按钮跳转到新页面,刷新新页面。 用vue-router 重新路由的时候到当前页面的时候是不进行刷新的。如果使用window.reload() 或者router.go(0) hisory.go(0) 刷新的时候整个浏览器进行刷新加载, 但是页面闪烁, 体验不好。二、解决办法使用:provide /inject 组合作用是: 允许一个祖先组件向其所有子孙后代注入一个依赖, 无论组件层次有多深,并在其上下游关系成立时间里始终生效。<template> <div id=
2020-08-06 08:18:52 11149 3
原创 janusGraph数据导入导出
导出数据g.io(’/opt/janusgraph-0.5.2/test.graphml’).with(IO.writer,IO.graphml). write().iterate()导入数据g.io(’/opt/janusgraph-0.5.2/test.graphml’).with(IO.reader, IO.graphml).read().iterate()
2020-07-31 16:04:31 1167 2
原创 vue 中 el-select 回显 再次选择不显示最新
添加@change="$forceUpdate()"<el-select size="small" v-model="dialogModal.gender" placeholder="请选择性别" @change="$forceUpdate()"> <el-option v-for="operation in genderList" :label="operation.name" :value="operation.value"></el-option&g
2020-07-28 07:57:25 814
原创 element-ui date-picker 日期格式化
添加属性:value-format=“yyyy-MM-dd” 如下:<el-form-item label="生日" prop="birthday"> <el-date-picker v-model="dialogModal.birthday" type="date" placeholder="选择日期生日" value-format="yyyy-MM-dd"> </el-date-picker>...
2020-07-28 07:53:22 1405
原创 javassist 生成对象属性
java动态生成代码涉及到了字节码操作,通常 java 动态性两种常用的实现方式1,字节码操作2,反射。运行时操作字节码可以实现如下功能1,动态生成新的类。2, 动态改变某个类的结构。字节码操作 通常比反射开销小,性能高。1.添加依赖<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <ver
2020-07-21 13:48:26 284
原创 fastJson、Gson、Jackjson转对象时和对象中getter、setter关系
开发过程中将对象序列化成json字符串常用的工具类一般就三种:fastJson、Gson、Jackjson。Gson是通过反射遍历该类中的所有属性,并把其值序列化成json字符串,不需要getter和setter。JackJson和fastJson是过反射遍历出该类中的所有getter方法获取属性的,并把其值序列化成json字符串。...
2020-07-20 10:33:46 901
原创 Mybatis的 mapper-locations有无此配置区别
1、如果Mapper.xml与Mapper.class在同一个包下且同名,spring扫描Mapper.class的同时会自动扫描同名的Mapper.xml并解析。无需配置 mybatis的mapper-locations2、如果Mapper.xml与Mapper.class不在同一个包下或者不同名,就必须使用配置mapperLocations指定mapper.xml的位置。一般xml、properties等文件推荐放入到resources下,.classes文件放入到sources中。所以mapper.
2020-07-20 09:04:20 1844
原创 @Mapper 、@MapperScan、 @Repository使用
1、@Mapper作用:用在接口类上,在编译之后会生成相应的接口实现类,是mybatis的注解。位置:对应的某个接口类上面@Mapperpublic interface EmployeeMapper {public Employee getEmpById(Integer id);public void insertEmp(Employee employee);}如果想要每个接口都要变成实现类,那么需要在每个接口类上加上@Mapper注解,比较麻烦,解决这个问题用 @MapperScan
2020-07-20 08:17:26 2212
原创 mybaits collection的两种用法
一、说明collection聚集元素用来处理“一对多”的关系。一种是嵌套方式,一种是分段查询方式。拿一个班级有多个学生为例。二、建表和实体类1.建立class表CREATE TABLE class (id int(11) NOT NULL AUTO_INCREMENT,class_name varchar(255) DEFAULT NULL,PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;2、建立s
2020-07-16 17:33:09 266
原创 springboot 自定义 starter 例子
一、背景1、SpringBoot starter机制 SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景
2020-06-22 15:57:40 338
原创 springboot yml或property文件加载流程
一、加载流程内部类loader创建,加载构造器,获取List propertySourceLoaders,一个是解析application.property,一个是解析application.yml的。解析property文件方法。解析yml方法。
2020-06-21 19:06:17 403
原创 java 5中创建对象方式
一、方式1、使用new关键字 } → 调用了构造函数这种方式,我们可以调用任意的构造函数(无参的和带参数的)。2、使用Class类的newInstance方法 } → 调用了构造函数使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。3、使用Constructor类的newInstance方法 } → 调用了构造函数和Class类的newInstance方法很像, java.lang.reflect.Constructor类里也有一个n
2020-06-20 18:05:53 107
原创 liunx 使用crontab定时备份数据并上传远程ftp
1.crontab安装及启动安装crontab:yum install crontabs服务操作说明:/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbin/service crond restart //重启服务/sbin/service crond reload //重新载入配置查看crontab服务状态:service crond status手动启动crontab服务:service crond sta
2020-06-12 14:36:19 366
原创 dubbo 注解和Shiro realm 不能注入service问题解决
一、背景:项目 采用dubbo+shiro 进行权限管理,shiro放在消费者里面,在shiro 的realm中注入用户的service。采用这种方式,public class UserRealm extends AuthorizingRealm { @Reference IUserService userService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalColle
2020-06-12 11:53:47 417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人