java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java Spring5新特性

Java_Spring之Spring5 的新特性

作者:JiangTao_xlili

这篇文章主要介绍了Java_Spring中Spring5 的新特性,需要利用jdk8 版本更新的内容,依赖库更新,感兴趣的小伙伴可以参考阅读

1 与 JDK 相关的升级

1.1 jdk 版本要求:

1.2 利用 jdk8 版本更新的内容

第一:基于 JDK8 的反射增强

请看下面的代码:

public class Test {
 
    //循环次数定义:10 亿次
    private static final int loopCnt = 1000 * 1000 * 1000;
    
    public static void main(String[] args) throws Exception {
        //输出 jdk 的版本
        System.out.println("java.version=" + System.getProperty("java.version"));
        t1();
        t2();
        t3();
    }
 
    // 每次重新生成对象
    public static void t1() {
        
        long s = System.currentTimeMillis();
        
        for (int i = 0; i < loopCnt; i++) {
            Person p = new Person();
            p.setAge(31);
        }
    
        long e = System.currentTimeMillis();
        System.out.println("循环 10 亿次创建对象的时间:" + (e - s));
    }
 
    // 同一个对象
    public static void t2() {
 
        long s = System.currentTimeMillis();
        Person p = new Person();
        
        for (int i = 0; i < loopCnt; i++) {
            p.setAge(32);
        }
 
        long e = System.currentTimeMillis();
        System.out.println("循环 10 亿次给同一对象赋值的时间: " + (e - s));
    }
 
    //使用反射创建对象
    public static void t3() throws Exception {
        
        long s = System.currentTimeMillis();
        Class<Person> c = Person.class;
        Person p = c.newInstance();
        Method m = c.getMethod("setAge", Integer.class);
 
        for (int i = 0; i < loopCnt; i++) {
            m.invoke(p, 33);
        }
 
        long e = System.currentTimeMillis();
        System.out.println("循环 10 亿次反射创建对象的时间:" + (e - s));
    }
 
    static class Person {
        
        private int age = 20;
    
        public int getAge() {
            return age;
        }
 
        public void setAge(Integer age) {
            this.age = age;
        }
    }
}

jdk1.8 版本(就是 JDK8)运行时间如下:

当切换到 jdk1.7 版本之后,运行时间如下:

有此我们可以看出,在反射创建对象上,jdk8 确实做了加强。

2 核心容器的更新

可以在 Spring 的 Jira 上了解更多关于组件索引的相关信息。

3 JetBrains Kotlin 语言支持

Kolin概述:是一种支持函数式编程编程风格的面向对象语言。Kotlin 运行在 JVM 之上,但运行环境并不限于 JVM。

Kolin 的示例代码:

{
    ("/movie" and accept(TEXT_HTML)).nest {
        GET("/", movieHandler::findAllView)
        GET("/{card}", movieHandler::findOneView)
    }
 
    ("/api/movie" and accept(APPLICATION_JSON)).nest {
        GET("/", movieApiHandler::findAll)
        GET("/{id}", movieApiHandler::findOne)
    }
}

Kolin 注册 bean 对象到 spring 容器:

val context = GenericApplicationContext {
    registerBean()
    registerBean { Cinema(it.getBean()) }
}

4 响应式编程风格

WebClient webClient = WebClient.create();
Mono person = webClient.get()
                .uri("http://localhost:8080/movie/42")
                .accept(MediaType.APPLICATION_JSON)
                .exchange()
                .then(response -> response.bodyToMono(Movie.class));

5 Junit5 支持

6 依赖类库的更新

终止支持的类库

到此这篇关于Java_Spring之Spring5 的新特性的文章就介绍到这了,更多相关Java Spring5新特性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文