Spring Native 0.10.0 发布

来源: OSCHINA
编辑: 局长
2021-06-16

Spring Native 0.10.0 已发布,此版本基于 Spring Boot 2.5 和 GraalVM 21.1,主要带来了以下新功能:

  • 引入原生测试 (native testing)

  • 新增来自 GraalVM 团队的新官方 Gradle 插件

  • 引入可用于类的 AOT(ahead-of-time) 代理

此外还包括 43 个错误修复、文档改进和依赖项升级这些变化。

原生测试和 Gradle 插件

Spring Native 开发团队称一直在与 GraalVM 团队合作,以将原生镜像在构建插件方面提升到一个新的水平。现在,新的原生构建工具取代了前者native-image-maven-plugin,并支持使用本地编译器native-image构建和测试原生应用程序。

以前仅提供 Maven 支持,现在提供了 Maven 和 Gradle 插件。如果你正在升级,新的 Maven 插件坐标为org.graalvm.buildtools:native-maven-plugin:0.9.0配置好原生构建工具插件后,开发者不仅可以通过mvn -Pnative -DskipTests packagegradle nativeBuild构建自己的应用程序,还可以使用mvn -Pnative testgradle nativeTest将 JUnit 5 测试作为原生镜像运行。对此,Spring Native 本身已升级以添加初始测试支持,因此@SpringBootTest会作为原生镜像运行。这是原生 Spring Boot 应用程序的一个重要里程碑,也是 JVM 生态的一个重要里程碑,包括 Spring 本身,现在可以使用官方插件来提升原生支持的质量和可维护性。

可用于类的 AOT(ahead-of-time) 代理

对于原生镜像,需要在构建时定义代理。到目前为止,Spring Native 只支持只能在接口上使用的 JDK 代理,不支持在 JVM 上通过 CGLIB 代理处理的用于类的代理,因为原生世界不支持在运行时生成字节码。

// Typical security use case of a class proxy now supported on native
@Service
public class GreetingService {

    public String hello() {
        return "Hello!";
    }

    @PreAuthorize("hasRole('ADMIN')")
    public String adminHello() {
        return "Goodbye!";
    }
}

但从 0.10 开始,现在可以在构建时通过@AotProxyHint注释生成用于类的代理。请注意前者@ProxyHint已被重命名为@JdkProxyHint,以避免混淆。

此功能允许在类上实现支持安全性、事务和广泛的其他基于代理的机制。

详细更新说明查看发布公告

展开阅读全文
7 收藏
分享
加载中
精彩评论
忍不住英俊的笑了
2021-06-16 13:37
5
举报
不错,这一下跨了一大步
2021-06-16 10:57
3
举报
可以,不收费,.netcore现在是MIT协议开源的,比java还自由,重新收费的话不被喷成狗?而且到时候也会有公司搞分支发展的
2021-06-18 12:44
2
举报
用.net core 不香吗
2021-06-16 10:13
2
举报
win10是最后一代,哈哈结果win11出来了,还有WindowsPhone,微软不靠谱
2021-06-21 08:38
1
举报
最新评论 (22)
GraalVM 企业版是收费的,比较遗憾。
java项目, 可以打包成native代码了。windows exe, liunx可执行文件了。 调试要和go, c/c++一样了,要用gdb. 这种情况下,jvm虚拟机废了。 20多年梦一场,说好的一次编译到处运行,重来都没有彻底的实现。跨平台不是需要了,人家容器层面已经做了,在语言层搞有点鸡肋。 java在向go, rust语言学习, 无奈包袱可不是一样的重啊!
2021-06-21 09:45
0
回复
举报
GraalVM只是锦上添花而已, 不可能喧宾夺主, 更不会成为主流的.
2021-06-21 10:19
0
回复
举报
期待期待,准备在 https://github.com/YunaiV/SpringBoot-Labs 写个示例

2.5.0!冲
2021-06-21 00:17
1
回复
举报
😎
2021-06-20 14:34
1
回复
举报
您好,请问这个是有什么用的?
2021-06-19 23:36
0
回复
举报
是前端框架吗?
2021-06-19 15:15
0
回复
举报
顾得 顾得
2021-06-17 20:32
0
回复
举报
革命时代变革来了
2021-06-17 12:48
0
回复
举报
编译要多久
2021-06-16 14:14
0
回复
举报
不错,这一下跨了一大步
2021-06-16 10:57
3
回复
举报
期待发布正式版,现在一个微服务镜像启动慢,占用内存资源大,一个简单应用动辄占用500+内存
2021-06-16 09:25
0
回复
举报
用.net core 不香吗
2021-06-16 10:13
2
回复
举报
一边玩去, 这里没有.net说话的份.
2021-06-16 11:04
0
回复
举报
你也一边玩去,微服务没啥spring 啥事
2021-06-16 11:57
0
回复
举报
忍不住英俊的笑了
2021-06-16 13:37
5
回复
举报
linux平台可以用吗?收费吗?就算现在不收费,如果以后是.net的天下,难保微软不会收费
2021-06-18 11:46
0
回复
举报
可以,不收费,.netcore现在是MIT协议开源的,比java还自由,重新收费的话不被喷成狗?而且到时候也会有公司搞分支发展的
2021-06-18 12:44
2
回复
举报
win10是最后一代,哈哈结果win11出来了,还有WindowsPhone,微软不靠谱
2021-06-21 08:38
1
回复
举报
还有.netcore 5年前就全主流平台可用了
2021-06-18 12:52
1
回复
举报
aot 编译应该只能加快启动速度,至于减少资源占用,效果应该不大。
2021-06-18 16:23
1
回复
举报
应该不会吧,我有看到其他地方说资源占用改善也很大?
2021-06-19 12:56
0
回复
举报
既然是简单应用却非要用重量级框架, 那就怪不得内存占用高了.
换个轻量级框架,稍微调一下启动参数, <100M内存很轻松.
2021-06-21 10:28
0
回复
举报
更多评论
22 评论
7 收藏
分享
返回顶部
顶部