我们将Spring用于我的应用程序目的,并使用Spring Testing框架进行单元测试.但是我们遇到一个小问题:应用程序代码从类路径中的位置列表(xml文件)加载Spring应用程序上下文.但是当我们运行单元测试时,我们希望一些Spring bean是模拟而不是完整的实现类.此外,对于某些单元测试,我们希望一些bean成为模拟,而对于其他单元测试,我们希望其他bean成为模拟,因为我们正在测试应用程序的不同层.
所有这些意味着我想重新定义应用程序上下文的特定bean并在需要时刷新上下文.在执行此操作时,我只想重新定义位于一个(或多个)原始xml bean定义文件中的一小部分bean.我找不到一个简单的方法来做到这一点.一直认为Spring是一个测试友好框架的单元,所以我必须在这里遗漏一些东西.
你有什么想法怎么做吗?
谢谢.
假设我有这门课程:
public class A {
private HashMap<String, B> map;
@XmlElement
private void setB(ArrayList<B> col) {
...
}
private ArrayList<B> getB() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
当尝试使用JaxB将xml文档解组到此类时,我注意到,而不是调用setB()方法并向我发送B实例列表,JaxB实际上调用了getB()并将B实例添加到返回的列表中.为什么?
我想要调用setter的原因是该列表实际上只是一个临时存储,我想从中构建map字段,所以我想在setter中这样做.
谢谢.
我们有大约1.2 GB(总机物理内存2 GB)的允许的最大堆大小JBoss上运行的Web基于Java的应用程序.在某些时候,应用程序停止响应(对客户端)几分钟.经过一些分析,我们发现罪魁祸首是Full GC.以下是详细GC日志的摘录:
74477.402:[全GC [PSYoungGen:3648K-> 0K(332160K)] [PSOldGen:778476K-> 589497K(819200K)] 782124K-> 589497K(1151360K)[PSPermGen:102671K-> 102671K(171328K)],646.1546860秒] [ 时报:用户= 3.84 SYS = 3.72,实际= 646.17秒 ]
我不明白是怎么回事可能是实时花费在全GC是约11分钟(646秒),而用户+ SYS时间是7.5秒.7.5秒声音对我来说更合理的时间花在从老一代清洗<200 MB.所有其他时间去哪儿了?
非常感谢.