У нас есть приложение Spring Boot, которое реализует сложную логику рабочего процесса c, которая может быть расширена / изменена для различных клиентов.
Для достижения этой цели мы предложили предоставить некоторые Java интерфейсы, которые клиенты могут реализовать извне, чтобы обеспечить настраиваемые логики рабочего процесса c и упаковать их в качестве jar для возврата.
Мы планируем поместить эти файлы JAR-клиента в какую-то внешнюю папку и добавить в путь к классу приложения весенней загрузки, при следующей перезагрузке эти файлы JAR будут видны приложению Spring, и будут действовать указанные классы c клиента. (Отражение или как @Component beans).
Есть проблема с этим подходом.
Как мы ограничиваем эти реализации клиентских внешних классов, чтобы они не использовали @Autowired или SpringContext.getBean или любые другие средства для незаконного доступа к нашим внутренним службам / репозиториям / компонентам или другим bean-компонентам, которые не связаны с их областью действия?
ИЛИ
Есть ли лучший подход к тому, чего мы пытаемся достичь?