我的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。
但是我该怎么办?
答案 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因此它将起作用。