Format's Notes

分享技术和生活


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 搜索
close

SpringBoot自动化配置的注解开关原理

发表于 2016-11-13   |   分类于 springboot   |     |   阅读次数

在之前我们分析SpringBoot的自动化配置原理的时候,分析了freemarker的自动化配置类FreeMarkerAutoConfiguration,这个自动化配置类需要classloader中的一些类需要存在并且在其他的一些配置类之后进行加载。

但是还存在一些自动化配置类,它们需要在使用一些注解开关的情况下才会生效。比如spring-boot-starter-batch里的@EnableBatchProcessing注解、@EnableCaching等。

阅读全文 »

SpringBatch中的retry和skip机制实现分析

发表于 2016-11-09   |   分类于 spring   |     |   阅读次数

SpringBatch是spring框架下的一个子模块,用于处理批处理的批次框架。

本文主要分析SpringBatch中的retry和skip机制的实现。

先简单说明下SpringBatch在SpringBoot中的使用。

如果要在springboot中使用batch的话,直接加入以下依赖即可:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

然后使用注解开启Batch模块:

...
@EnableBatchProcessing
public class Application { ... }

之后就可以注入JobBuilderFactory和StepBuilderFactory:

@Autowired
private JobBuilderFactory jobs;

@Autowired
private StepBuilderFactory steps;

有了这2个factory之后,就可以build job。

阅读全文 »

java Annotation的RetentionPolicy介绍

发表于 2016-11-04   |   分类于 java   |     |   阅读次数

Java Annotation对应的Retention有3种,在RetentionPolicy中定义,有3种:

  1. SOURCE. 注解保留在源代码中,但是编译的时候会被编译器所丢弃。比如@Override, @SuppressWarnings
  2. CLASS. 这是默认的policy。注解会被保留在class文件中,但是在运行时期间就不会识别这个注解。
  3. RUNTIME. 注解会被保留在class文件中,同时运行时期间也会被识别。所以可以使用反射机制获取注解信息。比如@Deprecated
阅读全文 »

Swagger在SpringBoot中的使用

发表于 2016-10-09   |   分类于 springboot   |     |   阅读次数

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

在SpringBoot中要使用Swagger的话,可以使用springfox。

在sbt中添加依赖即可:

libraryDependencies += "io.springfox" % "springfox-swagger2" % "2.6.0"
libraryDependencies += "io.springfox" % "springfox-swagger-ui" % "2.6.0"

查看springfox-swagger2中的源码,发现springfox并不是通过autoconfigure实现和swagger的整合的,而是基于Spring的方式Import各种bean构造Swagger。

所以本文指的Swagger在SpringBoot中的使用同样也可以在Spring中使用。

阅读全文 »

SpringBoot的事务管理

发表于 2016-10-07   |   分类于 springboot   |     |   阅读次数

Springboot内部提供的事务管理器是根据autoconfigure来进行决定的。

比如当使用jpa的时候,也就是pom中加入了spring-boot-starter-data-jpa这个starter之后(之前我们分析过springboot的自动化配置原理)。

Springboot会构造一个JpaTransactionManager这个事务管理器。

而当我们使用spring-boot-starter-jdbc的时候,构造的事务管理器则是DataSourceTransactionManager。

这2个事务管理器都实现了spring中提供的PlatformTransactionManager接口,这个接口是spring的事务核心接口。

这个核心接口有以下这几个常用的实现策略:

  1. HibernateTransactionManager
  2. DataSourceTransactionManager
  3. JtaTransactionManager
  4. JpaTransactionManager

具体的PlatformTransactionManager继承关系如下:

阅读全文 »

Netty的单元测试

发表于 2016-09-03   |   分类于 netty   |     |   阅读次数

我们在编写完Netty程序之后,会需要进行ChannelHandler的一些测试。

在初学Netty的时候,我们都是直接起一个Server,然后再写一个Client去连接Server,看传输的数据和接收到的数据是否正确。

在Netty in Action书中的Transport和Unit-test your code这两章就提出了可以使用EmbeddedChannel进行ChanndlHandler的单元测试。

阅读全文 »

使用Netty编写自定义的协议

发表于 2016-08-30   |   分类于 netty   |     |   阅读次数

Netty内部提供的Codec用于处理消息的编解码问题,比如Http,Ftp,SMTP这些协议,都需要进行编解码。

Netty内部直接提供了Http协议的Codec组件用于编解码Http协议。

在开发过程中,有时候我们需要构建一些适应自己业务的应用层协议,Netty可以很方便地实现自定义协议。

比如我们的自定义协议CucstomProtocol结构如下:

| version | header | content |

其中version表示版本号,long类型;header是一个uuid,string类型,content则是具体的内容,string类型。

阅读全文 »

Netty in Action笔记(二)

发表于 2016-08-29   |   分类于 netty   |     |   阅读次数

主要记录ChannelHandler、Codec以及Bootstrap的作用,还有Netty内置的一些ChannelHandler、Codec,以及Bootstrap的分类。

阅读全文 »

Netty in Action笔记(一)

发表于 2016-08-19   |   分类于 netty   |     |   阅读次数

一篇读书笔记,根据章节进行下总结。已经看了5章,先对这5个章节做个小总结。

阅读全文 »

SpringBoot的actuator模块

发表于 2016-06-25   |   分类于 springboot   |     |   阅读次数

springboot内部提供了一个模块spring-boot-actuator用于监控和管理springboot应用。

这个模块内部提供了很多功能,endpoint就是其中一块功能。

我们在sbt中加入这个模块的依赖:

libraryDependencies += "org.springframework.boot" % "spring-boot-starter-actuator" % "1.3.5.RELEASE"

然后启动项目,访问地址 http://localhost:8080/health,看到以下页面:

{
    status: "UP",
    diskSpace: {
        status: "UP",
        total: 249779191808,
        free: 22231089152,
        threshold: 10485760
    },
    db: {
        status: "UP",
        database: "H2",
        hello: 1
    }
}
阅读全文 »
1…345…13
Format

Format

《深入理解Spring Cloud与实战》正式开始售卖啦!

122 日志
27 分类
65 标签
RSS
GitHub Twitter Weibo
友情链接
  • Vangoleo
© 2020 Format
由 Hexo 强力驱动
主题 - NexT.Pisces