首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java类批量移动到新包中

将Java类批量移动到新包中
EN

Stack Overflow用户
提问于 2018-02-27 18:28:21
回答 3查看 392关注 0票数 1

我愿意在上下文启动时间变得太慢的Spring应用程序上进行测试。一种方法是使包扫描更严格,但随后我必须将所有bean实现移动到这个更严格的包结构中(例如,从com.foo.*到com.foo.beans.*)。

当我启动容器时,Spring (实现+接口)扫描了超过2500个bean,所以我假设我将不得不移动大约1000-1300个类。好消息是:我可以很容易地在上下文启动时生成它们的列表……

然而,我也想要一个使用列表文件作为输入的自动重构。在我开始写一些涵盖这个任务的脚本之前,市场上有没有什么东西可以完成这个任务呢?我并不害怕来自外部的类调用,因为基本上所有的bean都是注入的bean,并且应该只使用接口来调用它们(如果在所有地方都正确应用了dip原则,但我将能够手动处理异常!)。

顺便说一句,因为第一个答案似乎表明我没有充分解释这个问题:我在列表中的文件位于不同的包中,并且这些包中可能有我不想移动的其他类。我最好的方法是找到一种方法来调用eclipse重构,将单个文件从a位置移动到b位置,但对于我知道的文件,这会连续1200次。

EN

回答 3

Stack Overflow用户

发布于 2018-02-27 18:53:08

如果使用的是eclipse IDE,则为

1.右键单击项目-> Refactor -> Rename

2.右键单击项目-> Refactor -> move

  1. 通过鼠标单击选择项目并使用快捷键( Alt + Shift +R)-rename
  2. 通过鼠标单击选择项目并使用快捷键( Alt + Shift +V) -move
票数 1
EN

Stack Overflow用户

发布于 2018-02-27 18:33:37

在像EclipseIntelliJ这样的集成开发环境中重构包就可以了。

票数 0
EN

Stack Overflow用户

发布于 2020-07-23 02:35:21

我想做同样的事情,但发现没有批量解决方案。我可以这样做的唯一方法是使用IntelliJ

首先,尝试使用Refactor | Move将所有代码移动到新的命名空间中

  • 如果任何内容是第三方的,或者是生成的(即不在src/main或src/
  • 中),则不要移动它,并使用Refactor | Move在名称空间内移动所有其他名称空间/类,这可以使用multi select来完成。

  • 当然,这会改变你移动的类所能看到的类。例如,如果另一个库以前在相同的名称空间中,那么现在它不在了,所以如果没有显式导入,就不允许它们访问包中的内容。

  • 这可能会导致许多Error creating bean with name...类型错误。也许您可以通过将ComponentScan添加到有问题的类中,并使用旧的和新的名称空间来解决其中的大多数问题

@组件扫描({“com.mycompany.old.*”,"com.mycompany.new.*"})

  • 如果你也有一个Spring仓库,那么你可能会遇到同样的问题,实体(Not a managed type)。通过将以下内容添加到您的主应用程序中,以相同的方式解决它们。

@实体扫描({“com.mycompany.old.*”,"com.mycompany.new.*"})

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49006432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档