簡體   English   中英

卡住將 Spring xml 配置轉換為 java 配置

[英]Stuck converting Spring xml config to java config

我堅持將 Spring 中的當前測試應用程序從使用 XML 配置轉換為使用 Java 配置...

我有以下文件

App.java

package com.spring.ioc.DependencyInjection;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

 public class App {
    public static void main(String[] args) {
     ApplicationContext ctx = new ClassPathXmlApplicationContext("app-config.xml");
        Phone p = ctx.getBean("phone", Phone.class);
     p.calling();
     p.data();

    }
}

Galaxy.java

package com.spring.ioc.DependencyInjection;

public class Galaxy implements Phone {
    public void calling() {
        System.out.println("Calling using Galaxy");
    }
    public void data() {
        System.out.println("Browsing internet using Galaxy");
    }
}

iPhone.java

package com.spring.ioc.DependencyInjection;

public class IPhone implements Phone {
    public void calling() {
        System.out.println("Calling using iPhone");
    }
    public void data() {
        System.out.println("Browsing internet using iPhone");
    }
}

電話.java

package com.spring.ioc.DependencyInjection;

public interface Phone {
    void calling();

    void data();
}

應用程序配置.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">
        
      <bean id="phone" class="com.spring.ioc.DependencyInjection.IPhone"></bean>  
        
 </beans>

上面的代碼允許我演示如何使用 XML 並通過更改完全限定名稱末尾的 bean 名稱來編輯“iPhone”或“Galaxy”之間的文本

<bean id="phone" class="com.spring.ioc.DependencyInjection.IPhone"></bean><bean id="phone" class="com.spring.ioc.DependencyInjection.Galaxy"></bean>

如何在使用 JavaConfig 而不是 XML 配置時做同樣的事情?

我知道如何使用 Java 配置來只拉一個 bean,但我不知道如何設置它以在兩個對象之間交替。

你能通過修改我提供的代碼或添加任何其他需要的代碼來告訴我嗎?

我相信你可以使用

@Component("iphone")
public class IPhone {}

@Component("galaxy ")
public class Galaxy {}

以及你注射它的地方,

@Autowired
@Qualifier(value = "iphone")
private Phone iPhone;

@Autowired
@Qualifier(value = "galaxy")
private Phone galaxy;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM