List list = Lists.newArrayList(); Preconditions.checkNotNull(list, "传入的list不能为null"); * 数值类型判断处理 Long projectId = -12L; Preconditions.checkNotNull(projectId, "projectId不能为null"); Preconditions.checkArgument(projectId > 0, "输入projectId必须大于0", projectId); class UserInfo{ private String name; 利用Otpinal来对返回的单个对象进行包装(注意:所有的对象都要封装) 下面的例子中,判断UserInfo是否为null,以及对于Long类型如果为null,比如,前段没有传递该参数则,此时可以将其设置为0。
@Slf4j
public class OptionalExample {
    public static void main(String[] args) {
        Optional<UserInfo> userInfo = Optional.ofNullable(getUserInfo());
        if (!userInfo.isPresent()){
            log.info("userInfo is null");
        Optional<Long> projectIdOptional = Optional.ofNullable(getProjectId());
        Long projectId = projectIdOptional.orElse(0L); // 如果projectId为null时,这值为0
    public static UserInfo getUserInfo() {
        return null;
    public static Long getProjectId() {
        return null;
    @Getter
    @Setter
    class UserInfo{
        private String userName;
 2、retryer实现接口重试机制 
  在日常开发中,经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般是不靠谱的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候需要使用失败重试调用API接口来获取。 
 (1)需要再引入guava-retrying包: 
<dependency>
    <groupId>com.github.rholder</groupId>
    <artifactId>guava-retrying</artifactId>
    <version>2.0.0</version>
</dependency>
(2)实现代码示例如下:
@Slf4j
public class RetryerExample {
    public static void main(String[] args) throws Exception {
        Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder()
                .retryIfResult(Predicates.<Boolean>isNull())    // 设置自定义段元重试源
                .retryIfExceptionOfType(Exception.class)        // 设置异常重试源
                .retryIfRuntimeException()                      // 设置异常重试源
                .withStopStrategy(StopStrategies.stopAfterAttempt(5))   // 设置重试次数    设置重试超时时间????
                .withWaitStrategy(WaitStrategies.fixedWait(5L, TimeUnit.SECONDS)) // 设置每次重试间隔
                .build();
        Callable<Boolean> task = new Callable<Boolean>() {
            int i = 0;
            @Override
            public Boolean call() throws Exception {
                log.info("第{}次执行!", i);
                if (i<3) {
                    log.info("模拟执行失败");
                    throw new IOException("异常");
                return true;
        try {
            retryer.call(task);
        } catch (ExecutionException e) {
            log.error("error", e);
        } catch (RetryException e) {
            log.error("error", e);
        Boolean result = task.call();
        log.info("成功输出结果:{}", result);
  上述中方法调用失败了三次,在重试第4次之后,成功返回数据。 
                    引入guava包:&amp;lt;dependency&amp;gt;    &amp;lt;groupId&amp;gt;com.google.guava&amp;lt;/groupId&amp;gt;    &amp;lt;artifactId&amp;gt;guava&amp;lt;/artifactId&amp;gt;    &amp;lt;version&amp;gt;11.0.2&amp;lt;/version&amp;gt;&amp;lt;/dependency&amp;gt;1、Pr
				
目录概述基础工具1.Optional2.Objects.equals3.Objects.hash4.MoreObjects.toStringHelper5.ComparisonChain6.Preconditions集合工具1.ImmutableSet2.ImmutableList3.4.5.6.字符串工具1.2.3.4.5.6.附录1.Person.java 工具类将经常用的一些方法进行了封装,遇到相同的场景时不需要重复造轮子,从而大量节省开发人员时间和提高工作效率,Guava就是谷歌发布的高效率的
一、集合工具类 Lists 创建: newArrayList/newLinkedList/newArrayListWithCapacity/newArrayListWithExpectedSize/CopyOnWriteArrayList 其他方法: 对象转换List asList, 切分 partition , 翻转 reverse , 转换 transform ,字节转 charactersOf 创建: newHashSet/newHashSetWithExpectedSize/n
Guava 是 Google 的一个开源项目,包含许多 Google 核心 Java 常用库,如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 与 I/O 等。 Maven依赖 <guava.version>19.0</guava.versio 1.1 使用和避免null Guava用Optional<T>表示可能为null的T类型引用。一个Optional实例可能包含非null的引用,也可能什么也不包括。它从不说包含的是null值,而是用存在或缺失来表示。但Optional从不会包含null值引用。 Optional<Integer> possible = Optional.of(5); possible.isPresent(); // returns true possible.get(); //
在实际开发过程中,经常存在多个层级结构的设计,而且多个层级结构还需要排序。这里通过将多级结构的数据在同一张表中(无需多张表进行关联),并通过level的巧妙设计来实现单表查询。 level的设计原则:0.*.* 其中,0是顶级结构,第一个*是顶级结构下的结构,第二个*是顶级结构下的结构下的结构。 举个栗子: 1、创建部门架构表:
在 SpringBoot 项目中,Guava 是一个非常常用的依赖。以下是一些常见的 Guava 依赖: 1. guavaGuava 核心库,包含了 Guava 的基本功能,如集合、缓存、并发、字符串处理等工具类。 2. guava-jdk8:Guava 针对 JDK8 的扩展库,包含了一些 Java 8 新增的 API 的实现,如 Optional、Streams、FunctionalInterfaces 等。 3. guava-testlib:Guava 的测试库,包含了 Guava 的测试框架和一些测试工具类,如 Truth、Mockito、JUnit4 等。 4. guava-retrying:Guava 的重试库,提供了一些重试机制的实现,如 Retryer、StopStrategies、WaitStrategies 等。 5. guava-graph:Guava 的图算法库,提供了一些图算法的实现,如 Graph、ValueGraph、Network 等。 6. guava-cache:Guava 的缓存库,提供了一些缓存的实现,如 Cache、LoadingCache、CacheBuilder 等。 7. guava-xml:Guava 的 XML 库,提供了一些 XML 解析和生成的工具类,如 XmlEscapers、XmlReader、XmlWriter 等。 总之,Guava 是一个非常实用的工具库,在 SpringBoot 项目中广泛应用。