我有两个项目,a和b。b把a当jar吃。b并不总是用在其他项目中(例如,项目c、d、e等可以使用或不使用b,但总是使用a)。我可以修改两个项目。
在a中有一个控制器,我想添加与b的业务模型(实体、服务等)相关的功能。当然,在中编写新功能是行不通的(主要是编译,但也会破坏两个项目的良好定义结构)。
a中的控制器被定义为java类本身中的springbean,并且还与使用它的zul页面相关。相关代码:
java
@Controller("userController")
@Scope("prototype")
public class UserController extends GenericForwardComposer
zul页面
<window apply="${userController}" >
如何在b中添加功能并尽可能避免不必要的复杂性?我希望避免扩展控制器和添加@primary定义。因为我使用的是Java8,所以我一直在考虑使用默认行为的接口,但是我还没有想到如何让执行在b中而不是在a中选择一个接口。组合也是一个选项,但是a中的bean不会被正确初始化(zul页面中有组件)。
任何帮助或指点将不胜感激。
1条答案
按热度按时间ha5z0ras1#
从zk的Angular 来看,这里没什么可做的。所以不用往这个方向看(根据目前提供的详细信息/代码-除非你最后的评论。。。
zul页面中有一些组件
... 表示/应该表示某种特定的东西)
这似乎是一个spring主题,如果您不喜欢,如何解析重复的bean定义(在a中是默认的,在b中是高级的)
@Primary
那也许吧@Priority
/@Order
有助于确定注射了哪种豆子。管理此类场景的另一种方法是spring概要文件或更通用的@conditional注解,它允许bean的动态配置/示例化。e、 g.Spring引导自动配置如下
@ConditionalOn...
-注解,我在zk springboot autoconfig中根据类路径上某些类的存在或基于属性的其他条件来取消/激活bean。在spring中有许多方法可以实现动态bean配置。如果你需要zk的专门帮助,你可以尝试zk论坛或zk支持(免责声明:我为zk工作)