Может ли модуль-info.java "открывать" оператор включать пакет и все подпакеты?
У меня есть module-info.java
файл, который выглядит как -
module foo.microservice {
requires spring.core;
requires spring.beans;
requires spring.context;
requires java.sql; // required for Spring Annotation based configuration :(
opens foo.microservice.configuration to spring.core;
opens foo.microservice.internal.services to spring.beans;
opens foo.microservice.internal.controllers to spring.beans;
exports foo.microservice.configuration;
exports foo.microservice.controllers;
exports foo.microservice.models;
exports foo.microservice.services;
}
Я надеюсь, что Spring сможет получить доступ ко всем внутренним пакетам без явного добавления каждого из них в module-info.java.
Есть ли способ иметь более общий opens
заявление, чтобы все мои внутренние пакеты (и подпакеты) были доступны для spring.beans
?
1 ответ
В настоящее время нет, так как JLS определяет объявление модуля как список директив, где каждая директива имеет следующий синтаксис:
ModuleDirective:
requires {RequiresModifier} ModuleName ;
exports PackageName [to ModuleName {, ModuleName}] ;
opens PackageName [to ModuleName {, ModuleName}] ;
uses TypeName ;
provides TypeName with TypeName {, TypeName} ;
Один и тот же синтаксис применяется для обоих exports
а также opens
: подстановочные знаки не допускаются в имени пакета. Возможно, это может быть улучшено в будущем, но я думаю, что это будет плохая практика, подобная плохой практике использования таких подстановочных знаков в операторах импорта.
Вы можете использовать открытый модуль, чтобы открыть все пакеты (внутренние или нет) для всех модулей. Я не думаю, что есть промежуточная степень детализации.
open module foo.microservice {
requires spring.core;
requires spring.beans;
requires spring.context;
requires java.sql; // required for Spring Annotation based configuration :(
exports foo.microservice.configuration;
exports foo.microservice.controllers;
exports foo.microservice.models;
exports foo.microservice.services;
}
(скопировано из комментария Алексея Романова)