☀框架技术
KimZing
Programming as a Way of Thinking
展开
-
Springboot集成MapperFactory(ma.glasnost.orika.MapperFactory)类属性复制
一、导入Jar() gradle方式compile group: 'ma.glasnost.orika', name: 'orika-core', version: '1.5.1' maven方式<groupId>ma.glasnost.orika</groupId><artifactId>orika-core</artifactId><version>1.5.1</version>原创 2017-04-13 19:14:17 · 2976 阅读 · 0 评论 -
四、Spring Cloud系列:问题-随机端口启动项目无法访问
以一个订单服务为例:一、使用${random.int} 访问失败一开始在订单服务使用的端口配置为server.port=${random.int}然而发现项目启动可以成功注册到eureka中心,但是访问却报错,仔细看下就会发现,eureka server中心的端口为13572,项目日志中的tomcat的端口为2534。这就是报错的原因。为什么会这样呢?因为server.port会被吊用两次,两次的原创 2017-09-17 13:45:41 · 3032 阅读 · 2 评论 -
五、Spring Cloud系列:Eureka服务端与客户端常用配置
一、服务端#================================普通配置==============================#应用名称spring.application.name=eureka-server-v1#应用端口server.port=7000#================================eureka中心配置===============原创 2017-09-17 13:52:30 · 7352 阅读 · 0 评论 -
六、Spring Cloud系列:Config服务端与客户端常用配置
一、服务端#================================普通配置==============================#应用名称spring.application.name=config-server-v1#应用端口server.port=7001#================================config配置=================原创 2017-09-17 14:01:14 · 2373 阅读 · 0 评论 -
七、Spring Cloud系列:让Logback日志中显示主机名与IP地址
一、代码在配置类中增加一行代码,配置本机IPimport org.apache.log4j.MDC;import org.springframework.context.annotation.Configuration;import java.net.InetAddress;import java.net.UnknownHostException;/** * @author kingboy--原创 2017-09-17 15:21:25 · 9418 阅读 · 1 评论 -
八、Spring Cloud系列:启动慢Initializing ExecutorService 'taskScheduler'
在单体服务启动时,发现了一个问题,在控制台输出到如下信息时启动超级慢,需要等待三分钟左右。 INFO | restartedMain | org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler | Initializing ExecutorService 'taskScheduler'猜了以下原因,这是一个ThreadP原创 2017-09-20 09:19:56 · 23352 阅读 · 5 评论 -
一、Spring Cloud系列:Zipkin服务端配置
一、引入依赖//起步依赖compile('org.springframework.cloud:spring-cloud-starter')//zipkincompile('io.zipkin.java:zipkin-server')//zipkin的web界面compile('io.zipkin.java:zipkin-autoconfigure-ui')//保存到数据库需要如下依赖c原创 2017-09-12 16:20:41 · 1980 阅读 · 0 评论 -
二、Spring Cloud系列:Zipkin客户端配置
一、依赖compile('org.springframework.cloud:spring-cloud-starter-zipkin')二、配置在配置文件中增加如下内容,指定Zipkin的服务端位置#设置zipkin serverspring.zipkin.base-url=http://localhost:9411#收集样本的比例,0-1,1表示所有请求都收集spring.sleuth.sa原创 2017-09-12 16:24:54 · 1961 阅读 · 0 评论 -
SpringBoot集成Swagger
一、swagger简述 Swagger 是一个帮助完善项目文档规范的框架。我们在类上使用提供的注解写注释,swagger可以根据我们写的注释内容生成相应的web页面,展示我们项目中的api文档。同时我们可以直接在页面上直接调用相应的接口。二、依赖compile("io.springfox:springfox-swagger2:2.7.0") //核心包,提供了注解compile("io.sp原创 2017-09-12 16:56:19 · 818 阅读 · 0 评论 -
三、Spring Cloud系列:通过消息队列传输zipkin日志
注意,和前两篇写的没有关系了,(当然也可以在前两篇的基础上修改)一、zipkin服务端配置1.引入依赖//===========消息队列方式的依赖=============//此依赖会自动引入spring-cloud-sleuth-stream并且引入zipkin的依赖包compile("org.springframework.cloud:spring-cloud-sleuth-zipkin-原创 2017-09-12 23:08:08 · 3521 阅读 · 0 评论 -
自定义SpringMVC全局参数转换
一、需求项目中使用java8的LocalDateTime进行日期参数的接收,前后台使用unix时间戳进行日期传输,需要在controller的方法中实现自动将unix时间戳转换为LocalDateTime。localhost:8080?time=1512900770public void test(@RequestParam LocalDateTime time) { System.out.原创 2017-12-10 18:19:56 · 965 阅读 · 0 评论 -
SpringAOP实现拦截Controller请求参数并输出到日志
一、实现的效果请求:http://localhost:8080/regist?username=king&age=12&password=123456Controller:@RestControllerpublic class UserController { @RequestMapping("/regist") public Apiresult userRegister(@Mode原创 2017-07-25 21:25:27 · 14061 阅读 · 18 评论 -
SpringBoot简介-SpringBoot是什么可以做什么
在过去的两年时间里,最让人兴奋、回头率最高、最能改变游戏规则的东西,大概就是Spring Boot了。Spring Boot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序。有了它, 你可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功 夫,甚至完全不用配置。实际上,Spring Boot的一项重要工作就是让Spring配置不再成为你成功原创 2017-08-30 12:27:42 · 36308 阅读 · 7 评论 -
SpringBoot使用Mybatis注解进行一对多和多对多查询
SpringBoot使用Mybatis注解进行一对多和多对多查询GitHub的完整示例项目地址kingboy-springboot-data一、模拟的业务查询系统中的用户user都有唯一对应的地址信息address,每个用户可以有多量车car,类似如下结构|-- user |-- address |-- carList |-- car1原创 2018-01-04 00:10:52 · 29914 阅读 · 32 评论 -
一、实现领域驱动设计读书笔记
(个人纪录,持续更新,内容很粗糙)工具类应该放在每个模块的内部,尽量减少模块间的共享。事件应该在对象内发布,由对象负责事件的发布。领域驱动中最重要的其实是限界上下文和定义通用语言。产品使用通用语言将业务组织,传达给编码人员,编码人员将通用语言翻译成code。要找出项目模块中的支撑子域和核心域。要注意的是在不同的环境下,定义是不同的应用服务只应该做事物、资源库、权限、邮件等操作,将一个个功能原创 2017-08-30 14:30:52 · 1229 阅读 · 0 评论 -
领域驱动核心概念总结
领域驱动的核心是建立正确的领域模型,以一种领域专家(产品经理-项目经理)、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型;每一个领域都是一个业务内聚的系统(领域上下文的体现),大大降低了各个模块的耦合。领域对象中具有自己的属性和行为,真正的按照面向对象的设计思想去设计创建对象,区别于传统setter、getter的贫血模型,能够快速适应需求原创 2017-08-30 12:11:41 · 4647 阅读 · 0 评论 -
SpringBoot使用thymeleaf的简单记录
一、引入jar包compile('org.springframework.boot:spring-boot-starter-thymeleaf')二、thymeleaf配置在application.xml中配置如下#模板的配置#关闭缓存,实时显示开发效果spring.thymeleaf.cache=false#指定类型spring.thymeleaf.content-type=text/ht原创 2017-08-24 20:48:36 · 775 阅读 · 1 评论 -
SpringBoot配置FastJson并解决乱码问题
1.导入Jar包,我用的Gradle,导入方式如下(最后一个)dependencies { //热部署 compile("org.springframework.boot:spring-boot-devtools") //spring mvc compile("org.springframework.boot:spring-boot-starter-web")原创 2017-04-11 17:46:49 · 12483 阅读 · 1 评论 -
gradle的离线功能应用-让springboot不再自动更新jar包
前因后果 最近在项目中应用了springboot框架,用起来提高了很高的效率。但是有一点觉得很无奈,每隔一段时间就会自动更新jar包,不知道是不是我的gradle文件没配置好的原因(我用的环境:idea+gradle+springboot)。 很无奈的情况下,只能另寻他法,突然想到gradle有个离线工作的模式设置,就是不联网,只用本地仓库的jar包,那么就不会再自动更新jar包了,当原创 2017-06-13 21:29:49 · 2375 阅读 · 0 评论 -
hibernate之cretiria,hql,本地sql基本使用
hibernate目前总共分为三大类查询:cretiria,hql,本地sql第一:关于cretiria的查询 具有一个直观的、可扩展的条件查询API是Hibernate的特色。创建一个Criteria 实例 org.hibernate.Criteria接口表示特定持久类的一个查询。Session是 Criteria实例的工厂。Criteria crit = sess.createCrit转载 2017-06-27 13:33:11 · 2484 阅读 · 0 评论 -
@resource,@qualify,@autowired的区别
一、@Autowired,@Qualifier @Autowired只按照类型注入,如果想按照名称注入,配合@Qualifier使用@Autowired@Qualifier("studentDao")二、@Resource如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常2. @Resource(name = "studentDa原创 2017-06-28 01:22:38 · 4026 阅读 · 0 评论 -
springboot开启热部署之Idea&Gradle
一、引入starter//热部署compile("org.springframework.boot:spring-boot-devtools")二、开启自动编译第一步windows:ctrl + alt + shift + /mac: command + alt + shift + /弹出以下界面第二步 点击Registry,勾选compiler.automake.allow.when.app原创 2017-07-06 19:22:24 · 5731 阅读 · 4 评论 -
SpringBoot使用Gradle构建war包的步骤
只是出于好奇才打成war包,正常情况下不推荐war。打成jar包可以方便的使用外部配置,并且启动速度更快,也方便部署到docker等容器中。一、应用插件1.1 gradle在gradle.build文件中新增apply plugin: war:apply plugin: 'java'apply plugin: 'war'apply plugin: 'org.springframework.bo原创 2017-07-17 15:33:01 · 11543 阅读 · 0 评论 -
springboot中配置restTemplate及简单使用
一、引入web的starter确保classpath中含有compile("org.springframework.boot:spring-boot-starter-web")二、配置restTemplate的Bean @Bean public RestTemplate restTemplate() { RestTemplateBuilder restTemplateB原创 2017-07-21 15:53:34 · 2902 阅读 · 0 评论 -
springboot默认错误页面及静态资源
一、自定义错误页面 想必都看过tomcat或spring的默认定义的错误页面,确实有那么点不好看。那么如何自定义呢?其实springboot已经提供了默认的配置路径。在resources目录下新建public/error目录建立错误页面 -resources |-public |- error |-400.html |-404.html原创 2017-07-21 17:04:57 · 8461 阅读 · 1 评论 -
历史上最详细的SpringBoot多数据源配置及使用流程
关于标题—>只是想看看标题党的效果如何一、场景(简化)要实现一个用户数据中心的系统架构,其中要用到两个数据库,一个database名为sso,主要存放用户的信息。另一个database名为configuration,存放一些配置信息。当A系统通过接口过来请求用户信息时,需要在配置库查询A系统的权限,然后将对应权限的用户信息返回给A系统。所以就需要使用两个不同的库,要在同一个项目中配置两套Entit原创 2017-07-21 19:15:25 · 5151 阅读 · 1 评论 -
springboot监控actuator使用手册
1. 引用起步 gradledependencies { //设置程序监控 compile("org.springframework.boot:spring-boot-starter-actuator")} maven<dependency> <groupId>org.springframework.boot</groupId> <artifactI原创 2017-07-17 17:00:06 · 853 阅读 · 0 评论 -
SpringBoot多依赖模块应用中,如何处理多数据源的主数据源位置
在springboot中如何配置多数据源的文章,上篇博客中已经介绍了( SpringBoot多数据源配置及使用流程),但是会有一个问题,如果还有另外几个web应用要依赖不同的模块,那么主数据源究竟放在哪里呢?web项目少依赖简单不会出啥问题,但是一旦多了,主数据源放在哪里都会报错。其实有两个解决办法:一、禁用springboot的数据自动配置@SpringBootApplication(exclud原创 2017-07-25 13:27:30 · 3998 阅读 · 1 评论 -
Spring/SpringBoot定义统一异常错误码返回
配置大致说下流程,首先我们自定义一个自己的异常类CustomException,继承RuntimeException。再写一个异常管理类ExceptionManager,用来抛出自定义的异常。然后使用Spring提供的注解@RestControllerAdvice或者@ControllerAdvice写一个统一异常处理的类,在这个类中写一个带有@ExceptionHandler(Exceptio原创 2017-08-05 13:29:31 · 7466 阅读 · 0 评论 -
如何使用JPA的nativeQuery将查询出的信息封装为对象
在实际的项目中,很多时候需要很复杂的查询,而JPQL有些功能是不支持的,Criteria的写法又过于复杂了。用原生sql的方式进行查询会省很多事(缺点是和具体使用的数据库高度耦合了),但是使用JPA的createnativeQuery查询出来的却是一个Object对象,需要我们自己做一些封装的操作。//查询语句,本地sqlString sql = "SELECT telephone, passwo原创 2017-07-06 12:30:31 · 19662 阅读 · 1 评论 -
SpringMVC使用JsonView针对统一实体返回不同信息
项目GitHub地址一、随便说说项目中不同的接口需要返回不同的信息,而信息一般通过不同的对象实例去承载。例如有接口A和接口B,A需要返回不包含用户地址的用户信息, 而B需要返回包含用户地址的用户信息,其它信息和A的返回信息一致。这个时候应该建立两个不同的用户类,一个包含address,一个不包含,这样做显然是麻烦的,那么JsonView就可以帮你很优雅的解决这个问题。接下来就直接原创 2017-12-29 21:55:37 · 2330 阅读 · 0 评论