В настоящее время я работаю над созданием базовой поддержки Jolie в Spring Boot.Jolie - это микросервисный язык, который на самом деле основан на Java, но имеет совершенно другой синтаксис ( пример ).Благодаря классу JavaService , который поставляется с Jolie, можно брать функциональные возможности класса / метода из Java и его библиотек и встраивать их в Jolie.Я хотел бы знать, как этого можно добиться для аннотаций и функций, которые реализуются через них.Можно ли это сделать с помощью JavaService?Или я должен написать свой собственный анализ аннотации для Джоли?
Простой пример поведения, которого я хотел бы достичь, - это @SpringBootApplication, который запускает "Hello world" @RestController, например, здесь (пункты 2.3 и 2.4).В идеале аналогичная программа в Jolie должна выглядеть примерно так:
interface SpringAppInterface {
OneWay:
run(string)
}
outputPort SpringApplication {
Interfaces: SpringAppInterface
}
embedded {
Java:
"joliex.spring-boot.SpringApplicationService" in SpringApplication
}
@SpringBootApplication
main {
run@SpringApplication(args)
}
, где SpringApplicationService расширяет класс JavaService и встраивается в Jolie.А теперь @RestController:
inputPort SpringTestService {
...
}
@RestController
main {
@RequestMapping("/hello")
hello(void)(response) {
response = "hello world"
}
}
Это идеальный способ, и он хорошо демонстрирует поведение, которого я хочу достичь.И чтобы лучше показать реальное использование класса JavaService - здесь - его реализация стандартного класса Java Math, а здесь - его встраивание в Jolie.
С другой стороны: Интересно, возможно ли выполнить всю логику Spring Boot на стороне JavaService, поэтому, например, у меня уже есть JavaService с аннотацией @SpringBootApplication, аннотацией JavaService @RestController и т. Д.
Изменить: Как я уже сказал, я хочу создать поддержку Jolie в Spring Boot, поэтому в итоге разработчик Jolie сможет включить, например, «spring-boot.iol», и сможет создавать программы Jolie на основе Spring Boot.«spring-boot.iol», я полагаю, будет похож на все существующие файлы включения, такие как «console.iol», «math.iol» и т. д., и будет включать JavaService - назовем его «SpringBootService».Теперь этот SpringBootService будет использовать функциональные возможности библиотек Spring Boot, чтобы Джоли могла их использовать.Таким образом, при включении некоторых файлов * .iol, программа Jolie действительно реализует функциональные возможности Spring Boot и запускает приложения Spring Boot. Это, конечно, только моя концепция - как я думаю, что эта задача может быть выполнена, но опять же - есть проблема с аннотациями Spring Boot.