如何在XML配置中注入自动装配的bean?

时间:2019-11-27 14:35:06

标签: java xml spring annotations

我的Dao和DaoImpl类如下:

public interface MyDao{
}
@Service(value = "MyDao")
public class MyDaoImpl implements MyDao{
}

我需要将MyDaoImpl注入类Driver.java中的变量myDao

public class Driver{
   MyDao myDao;
   public MyDao getMyDao() {
        return myDao;
   }
   public void setMyDao(MyDao myDao) {
        this.myDao = myDao;
   }
}

现在的问题是我正在使用类似XML的方式创建bean:

<bean id="driver123" class="com.Driver">
</bean>

如何使用XML在此bean中注入MyDaoImpl对象(通过注释创建)? 如果通过XML创建了MyDaoImpl,我本可以使用该属性和ref config。

但是我该怎么办?

1 个答案:

答案 0 :(得分:0)

首先,您需要像这样为配置创建Config类

package com.example.amer.config;

import com.example.amer.dao.MyDaoImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Config {

    @Bean(name = "myDaoImpl")
    public MyDaoImpl myDaoImpl()
    {
        MyDaoImpl myDao = new MyDaoImpl();
        return myDao;
    }
}

在这里我们创建MyDaoImpl Bean

和MyDao界面

package com.example.amer.dao;

public interface MyDao {

    public String getUserByName();
}

和驱动程序类

package com.example.amer;

import com.example.amer.dao.MyDao;

public class Driver {
    MyDao myDao;

    public MyDao getMyDao() {
        return myDao;
    }

    public void setMyDao(MyDao myDao) {
        this.myDao = myDao;
    }

}

接下来,我将像这样创建xml bean

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- Scan the JavaConfig -->
    <context:component-scan base-package="com.example.amer.config" />

    <bean id="driver" class="com.example.amer.Driver">
        <property name="myDao" ref="myDaoImpl"></property>
    </bean>

</beans>

在xml中,我们扫描有关包含MyDao Impl的Java配置 我创建了驱动程序bean并定义为myDao属性,然后引用其名称在@Bean(name =“ myDaoImpl”)

中定义的MyDaoImpl bean

因此它将起作用。