You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:36:03