java9的模块化

到现在了,都快java17了,可是对于java9的module对于正式生产的使用文章少之又少,由于可以分模块打包,在加上graalvm的native image,对于云原生发布支持很好,这里记录下笔记.

 

先使用jdeps --class-path [classpath路径] [xxx/xxx/xx(类名路径)] 查看依赖关系

如果有版本冲突 加上 --multi-release 11(jdk版本号)

 

是的,目前是需要把所有依赖加到module-info配置里,不知道是不是我姿势不对

 

module-info.java

open module { //使用open关键字,可以用于spring对自己的项目的类进行反射

requires spring.boot;

exports com.xx.xxxx;

}

 

关键字:

requires

exports

open

use 服务使用

provide 服务提供

with

to

transitive 隐式传递依赖

static 编译强制,运行可选

 

模块类型:

普通模块(Normal Modules)
开放模块(Open Modules)
自动模块(Automatic Modules)
未命名模块(Unnameed Modules)

 

扩展:

Java 9的最新版本允许库开发人员使用JAR文件清单META-INF/MANIFEST.MF文件属性'Automatic-Module-Name'来指定其自动模块名称

比如Automatic-Module-Name: spring.boot

java9开始提供多版本jar,可以根据当前环境jdk版本自动选择合适的jar,通过ServiceLoader.load方法在META-INF/services目录指定的实现类

 

模块化jar文件

打包jmod文件

jlink:精简,只打包需要的api

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值