2010-11-22 21 views

回答

32

Spring允许您多次重新定义相同的bean名称,并将给定名称的最后一个bean定义处理为获胜的名称。例如,你可以有一个定义核心bean的XML文件,并将其导入到特定于客户端的XML文件中,该文件也重新定义了其中的一些bean。但是,这有点脆弱,因为没有机制来具体说“这个bean定义是一个覆盖”。

我发现最简洁的方式来处理这是使用new @Bean-syntax introduced in Spring 3。您可以使用Java定义它们,而不是将bean定义为XML。所以你的核心bean将被定义在一个@Bean-annotated类中,并且你的客户端配置将会继承它,并覆盖适当的bean。这允许您使用标准的java @Override注释,明确指出给定的bean定义被覆盖。

+0

你确定你可以在一个子ctx中重新定义一个具有相同id /名字的bean吗? – 2010-11-22 21:04:03