Gradle发布Java Library到Maven中央仓库

最近打算将一些基础的Jar包上传到Maven中央仓库,方便在自己项目中引用。本文将结合Gradle的两个插件maven-publishsigning来讲解如何发布一个Jar包。

在开始之前,先对OSSRH做下了解是很必要的。

OSSRHSonatype Open Source Software Repository Hosting Service,为开源软件提供maven仓库托管服务。你可以在上面部署snapshotrelease等,最后你可以申请把你的release同步到Maven Central RepositoryMaven中央仓库)。

[阅读全文]

SpringBoot的自动装配原理分析

在Spring Boot应用中的自动装配是通过@EnableAutoConfiguration 注解进行开启的。@EnableAutoConfiguration 可以帮助 Spring Boot 应用将所有符合条件的 @Configuration 配置类的 bean 都加载到 Spring IoC 容器中。

我们看下@SpringBootApplication注解,默认是启动@EnableAutoConfiguration 的。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {

	@AliasFor(annotation = EnableAutoConfiguration.class)
	Class<?>[] exclude() default {};

	@AliasFor(annotation = EnableAutoConfiguration.class)
	String[] excludeName() default {};

	@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
	String[] scanBasePackages() default {};

	@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
	Class<?>[] scanBasePackageClasses() default {};

	@AliasFor(annotation = Configuration.class)
	boolean proxyBeanMethods() default true;

}
[阅读全文]

SpringBoot配置文件加载的路径和优先级

很多人对SpringBoot文件加载的位置和优先级有点疑惑,下面通过源码看下到底是如何加载的。

我们先来看下SpringBoot加载PropertySource的顺序是如何的呢?可以参考官网:https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#boot-features-external-config

配置加载的优先级从高到低,其中高优先级可以覆盖低优先级的配置。

[阅读全文]

JPA ID生成策略

JPA 为对象关系映射提供了了⼀一种基于 POJO 的持久化模型

  • 简化数据持久化代码的开发⼯工作
  • 为 Java 社区屏蔽不不同持久化 API 的差异

JPA定义了持久化的标准,而Hibernate是持久化的实现。Spring Data JPA就是在Hibernate的基础上封装实现的。

JPA提供了很多常用的注解,下面就来讲下关于主键的生成策略,主要的注解有:

@Id
@GeneratedValue(strategy, generator)
@SequenceGenerator(name, sequenceName)
[阅读全文]

Git协同工作流的选择

  • 与传统的代码版本管理工具相比,Git 有很多的优势,因而越来越成为程序员喜欢的版本管理工具。我觉得,Git 这个代码版本管理工具最大的优势有以下几个。
  • Git 是一个分布式的版本管理工具,而且可以是单机版的,所以,你在没有网络的时候同样可以提交(commit)代码。
  • Git 从一个分支向另一个分支合并代码的时候,会把要合并的分支上的所有提交一个一个应用到被合并的分支上,合并后也能看得到整个代码的变更记录。而其他的版本管理工具则不能。
  • Git 切换分支的时候通常很快。不像其他版本管理器,每个分支一份拷贝。
  • Git 有很多非常有用的命令,让你可以很方便地工作。
[阅读全文]

Mongo数据备份以及恢复

MongoDB支持副本集,为何还需要备份呢?备份的主要目的有:1)防止硬件故障引起的数据丢失; 2)防止人为错误误删数据;3)时间回溯;4)监管要求。

[阅读全文]

Mongo的模型设计

数据模型

什么是数据模型?

1)数据模型是一组由符号、文本组成的集合,用以准确表达信息,达到有效交流、沟通 的目的。

2)Steve Hoberman 霍伯曼. 数据建模经典教程

数据模型设计的元素

1)实体 Entity

2)属性 Attribute

3)关系 Relationship

[阅读全文]

Mongo复制集机制及原理

复制集的作用

MongoDB 复制集的主要意义在于实现服务高可用。

它的现实依赖于两个方面的功能:

  1. 数据写入时将数据迅速复制到另一个独立节点上
  2. 在接受写入的节点发生故障时自动选举出一个新的替代节点

在实现高可用的同时,复制集实现了其他几个附加作用:

  1. 数据分发:将数据从一个区域复制到另一个区域,减少另一个区域的读延迟
  2. 读写分离:不同类型的压力分别在不同的节点上执行
  3. 异地容灾:在数据中心故障时候快速切换到异地
[阅读全文]