批量将Java类移动到新包中
我愿意在一个Spring应用程序上进行测试,因为上下文启动时间太慢了。一种方法是使包扫描更严格,但随后我必须将所有bean实现移到这个更严格的包结构中(例如,从com.foo.*移到com.foo.beans.*) 当我启动容器时,Spring扫描了2500多个bean(实现+接口),所以我假设我必须移动大约1000-1300个类。好消息是:在上下文启动期间,我可以轻松地生成它们的列表 但是,我还希望使用列表文件作为输入进行自动重构。在我开始写一些关于这个任务的脚本之前,市场上有什么东西可以完成这个任务吗?我并不担心来自外部的类调用,因为基本上所有bean都是注入bean,并且应该只使用接口来调用它们(如果dip原则在任何地方都正确应用,但我将能够手动处理异常!)批量将Java类移动到新包中,java,automated-refactoring,Java,Automated Refactoring,我愿意在一个Spring应用程序上进行测试,因为上下文启动时间太慢了。一种方法是使包扫描更严格,但随后我必须将所有bean实现移到这个更严格的包结构中(例如,从com.foo.*移到com.foo.beans.*) 当我启动容器时,Spring扫描了2500多个bean(实现+接口),所以我假设我必须移动大约1000-1300个类。好消息是:在上下文启动期间,我可以轻松地生成它们的列表 但是,我还希望使用列表文件作为输入进行自动重构。在我开始写一些关于这个任务的脚本之前,市场上有什么东西可以完成
顺便说一句,因为第一个答案似乎表明我没有充分解释这个问题:列表中的文件位于不同的包中,这些包可能有我不想移动的其他类。我最好的方法是找到一种调用eclipse重构的方法,将单个文件从位置a移动到位置b,但对于我确实知道的文件,这会连续移动1200次。我不会一手完成这项任务,我也没有找到任何工具可以帮我完成这项批量任务,尽管这是一项完全自动化的任务,不会超过一分钟,但需要一整天的时间来点击…在IDE中重构包,就像或者应该做的那样 如果您使用的是eclipse IDE
1.右键单击项目->重构->重命名
2.右键单击项目->重构->移动 或
我想做同样的事情,但发现没有批量解决方案。我唯一能做的就是使用IntelliJ
- 首先,尝试使用
Refactor|move
- 如果任何内容是第三方的,或生成的(即不在您的src/main或src/test中),则不要移动它,并使用
移动名称空间内的所有其他名称空间/类,您可以使用multi-select执行此操作Refactor | move
- 当然,这将改变移动的类可以看到的类。e、 如果另一个lib以前在同一个名称空间中,那么现在不是了,所以如果没有显式导入,就不允许它们访问包中的内容
- 这可能会导致大量创建名为…的bean的
错误。可能您可以通过向抱怨的类添加
,使用新旧名称空间来解决大多数问题ComponentScan
@ComponentScan({"com.mycompany.old.*", "com.mycompany.new.*"})
- 如果您也有一个Spring存储库,那么您可能会在实体上遇到同样的问题(
)。通过将以下内容添加到主应用程序,以相同的方式解决这些问题不是托管类型
@EntityScan({"com.mycompany.old.*", "com.mycompany.new.*"})