java - 如何在 XML 配置中注入 Autowired bean?
问题描述
我的 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 对象(通过 Annotation 创建)?如果 MyDaoImpl 是通过 XML 创建的,我可以使用属性和参考配置。
但是我该怎么做呢?
解决方案
首先,您像这样为配置创建配置类
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 配置,我创建 Driver bean 并定义到 myDao 属性,然后我引用 MyDaoImpl bean,其名称在 @Bean(name="myDaoImpl") 中定义
所以它会起作用。
推荐阅读
- java - 试图将附件“csv文件”添加到gmail但没有成功,它的Android应用程序,我用我的手机作为模拟器进行调试
- amazon-cognito - 在一段时间不活动后自动禁用已确认的 AWS Cognito 用户账户
- c# - 根据工作日安排 Azure Function
- amazon-web-services - AWS - Boto -第一次服务后停止服务
- c# - 如何创建只能输入数字的文本框?
- android - libwebviewchromium.so 在 AndroidTV 上崩溃,没有错误消息或堆栈跟踪
- python - 如何查询以便显示模型的字段而不是实际模型
- android - 如何将 Firebase 实时数据库与 RxJava 结合使用
- cordova - 如何在我的 ionic 应用程序中安装本机运行包?
- tensorflow - 我可以从具有动态大小的 TensorArray 中删除特定元素吗?