Spring XML配置转JavaConfig实现同Bean id多实现类切换咨询
Spring XML配置转JavaConfig实现方案
1. 新增Java配置类 AppConfig.java
放在和其他类相同的包com.spring.ioc.DependencyInjection下,代码如下:
package com.spring.ioc.DependencyInjection; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public Phone phone() { // 切换实现仅需修改返回值,和原XML修改class属性逻辑完全一致 return new IPhone(); // 需要使用Galaxy时替换为下面的代码即可 // return new Galaxy(); } }
2. 修改启动类 App.java
将原来加载XML配置的上下文替换为Java配置专用的注解上下文:
package com.spring.ioc.DependencyInjection; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class App { public static void main(String[] args) { // 加载Java配置类 ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); Phone p = ctx.getBean("phone", Phone.class); p.calling(); p.data(); } }
可选:多Bean注册灵活切换方案
如果需要同时将两个实现类注册到Spring容器中,可修改配置类如下:
package com.spring.ioc.DependencyInjection; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean("phone") public Phone iPhone() { return new IPhone(); } @Bean public Phone galaxy() { return new Galaxy(); } }
需要切换为Galaxy时,仅需将@Bean("phone")注解移动到galaxy()方法上即可,无需修改其他代码。
内容的提问来源于stack exchange,提问作者myfunnyfella
相关产品推荐
相关产品推荐

