- 博客(24)
- 收藏
- 关注
原创 从MyBatis-Plus看Spring Boot自动配置原理
约定优于配置:通过标准化配置路径和命名减少样板代码条件化装配:智能判断运行环境,按需加载组件扩展机制:通过starter和spring.factories实现模块化装配这种设计使得Spring Boot应用既能快速启动,又保持了高度的灵活性,堪称框架设计的典范。掌握自动配置原理,就能在遇到配置问题时快速定位,在需要扩展时游刃有余。
2025-02-10 22:56:17
1293
原创 基于数据库配置的 JSON 转换工具 ,解决两个不同结构不同字段名的 JSON字符串 之间的转换问题,支持xml形式的JSON
背景公司启动了一个紧急项目,需要与几个第三方系统对接。虽然一开始约定好了系统间交互的接口文档,但随着版本的迭代、需求的变更各系统都做了不小的改动。问题1.第三方的接口参数JSON属性名称与文档不一致2.第三方的接口入参JSON结构与文档不一致3.同一个业务,不同系统的接口结构不一样如何在不修改原有代码的基础上,对参数进行动态的转换解决上述问题?解决思路参数转换可...
2019-09-03 17:57:54
1146
6
原创 RestTemplate 报错 no suitable HttpMessageConverter content type [text/html;charset=UTF-8]
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.RestClientException: Could no...
2019-08-01 18:53:14
6816
原创 RestTemplate 请求url中包含百分号 会被转义成25
最初使用RestTemplate 进行远程调用方法如下:private String getRemoteData(String url) { logger.info("Request URL :" + url + "|"); String resp = rest.getForObject(url, String.class); logger.info("Response re...
2019-08-01 18:41:34
5890
1
转载 Java Runtime.exec()的使用
Sun的doc里其实说明还有其他的用法:exec(String[] cmdarray, String[] envp, File dir)Executes the specified command and arguments in a separate process with the specified environment and working directory.那个
2016-09-22 15:35:14
7793
原创 项目总结
项目概要: 对外提供一个查询接口。内部先调用其他9个接口获取数据,将json数据转换相应的BOM报文调用webService接口获取的结果返回给外部调用者。技术架构: 1. 接口查询器定义通用数据查询抽象类,包含如下抽象方法: execute() —处理接口查询业务逻辑 getTimeOut()
2016-05-26 18:22:11
269
原创 装饰模式
设计原则 ——“类应该对拓展开发,对修改关闭””装饰者模式动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案“在不改变原代码的基础上动态的为对象赋予新的行为…interestingjava中的装饰者模式
2016-04-09 17:51:20
280
转载 Future 总结
1. 关于FutureFuture接口包含以下方法: boolean cancel(boolean mayInterruptIfRunning)*取消任务的执行。参数指定是否立即中断任务执行,或者等等任务结束 boolean isCancelled() *任务是否已经取消,任务正常完成前将其取消,则返回 true boolean isDone()*任务是否已经完成。需要注意的是如果任务正常
2016-03-21 15:56:03
435
原创 java 异步调用
业务要求流程流转与数据记录(插表)异步进行使用多线程实现异步调用: 1.多线程配置 <bean id ="taskExecutor" name="esg.TaskExecutor" class ="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" > <property name = "core
2016-02-04 11:21:19
533
原创 初尝Spring AOP --实现多数据源切换
AOP配置 参考 http://blog.youkuaiyun.com/voyage_mh1987/article/details/5821238客户管理系统中,需要从不同的系统中获取客户的信息。有的系统用的是Oracle,有的用SqlServer。之前在网上看到过ibatis下修改配置文件,实现多数据源。项目中最终决定使用的是通过Spring AOP机制,实现在代码中不同的位置使用不同的数据源。切面类 ,用
2016-01-28 14:56:30
1843
转载 URL短地址---实现方案收集
http://blog.youkuaiyun.com/xiaoyao3857/article/details/10867581https://www.zhihu.com/question/29270034/answer/46446911
2016-01-26 11:57:33
363
原创 Head First设计模式---策略、观察者模式
为了加深理解,我试着用英雄联盟中的场景去描述涉及模式,更有趣一些o(∩_∩)o…哈哈“把模式装进脑子里,然后在你的涉及和已有的应用中,寻找何处可以使用它们” —以往是把代码复用,现在是把经验复用。**策略模式** “定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。”设计原则:把代码中可能会变化的部分独立封装起来,避免对其他不变部分产生影响 将行为作为
2016-01-25 11:42:07
423
转载 spring---定时任务(quartz定时器)
参考资料:http://blog.youkuaiyun.com/w13770269691/article/details/24355207
2016-01-20 15:05:35
395
转载 spring InitializingBean接口
学习Redis缓存时看到项目中有用到通过InitializingBean接口,实现当应用程序启动时将数据加载到缓存。spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。给新创建的类加上@component注解,并实现InitializingBean接口,重写afterPropertiesSet添加我们想实现的功
2016-01-20 15:02:08
336
原创 初试ScriptEngine
// 创建脚本引擎管理器 ScriptEngineManager sem = new ScriptEngineManager(); // 创建一个处理JavaScript的脚本引擎 ScriptEngine engine = sem.getEngineByExtension(ContentParam.JS);//执行脚本engine.eval(JS_COD
2016-01-19 16:14:26
318
转载 BeanUtils.copyProperties() 用法---转自百度经验
方法/步骤 1第一步: BeanUtils.copyProperties()与PropertyUtils.copyProperties()1、 通过反射将一个对象的值赋值个另外一个对象(前提是对象中属性的名字相同)。2、 BeanUtils.copyProperties(obj1,obj2); 经常闹混不知道是谁给谁赋值,无意中先到”后付前”这个词来帮助自己记忆这个功能。即将obj2的值赋值给ob
2016-01-19 15:18:08
805
原创 使用properties配置文件
1.读取配置文件,配置文件的命名需与类名相同,也可以写死,但要与类在同一目录下。 public class MyProperties extends Properties { private static final long serialVersionUID = -2189089546796878893L; public MyProperties(@SuppressWarnings
2016-01-19 14:13:05
362
转载 IBATIS下多数据源切换
http://blog.youkuaiyun.com/guoxu775/article/details/17355509
2016-01-19 10:49:00
454
转载 jQuery中的.bind()、.live()和.delegate()之间区别分析
DOM树首先,可视化一个HMTL文档的DOM树是很有帮助的。一个简单的HTML页面看起来就像是这个样子:事件冒泡(又称事件传播)当我们点击一个链接时,其触发了链接元素的单击事件,该事件则引发任何我们已绑定到该元素的单击事件上的函数的执行。复制代码 代码如下:$('a').bind('click',function(){alert('that tickles!')
2016-01-13 13:51:58
266
转载 为什么选择.live()或.delegate()而不是.bind()
为什么选择.live()或.delegate()而不是.bind() 毕竟,bind看起来似乎更加的明确和直接,难道不是吗?嗯,有两个原因让我们更愿意选择delegate或live而不是bind:为了把处理程序附加到可能还未存在于DOM中的DOM元素之上。因为bind是直接把处理程序绑定到各个元素上,它不能把处理程序绑定到还未存在于页面中的元素之上。如果你运行了$(‘a’).bind(…),而
2016-01-13 13:50:56
214
原创 锁机制
业务场景:提交流程接口,每次调用该接口会将当前流程提交至下一节点。需要避免重复提交流程解决思路:1.sychonized 锁 不适用 --- sychonized锁 当代码块被加锁时,后面的请求要等待执行完后才可以执行(排队)。但当短时间内产生同一请求,会重复提交2.redis缓存进入方法 ---判断缓存中是否有当前流程实例化编号
2016-01-08 11:55:07
541
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人