【发布时间】:2012-10-29 23:33:03
【问题描述】:
我在我的 xml 中使用了 beans:profiles,如下所示:
<beans profile="dev">
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.internal.url}" />
<property name="username" value="${jdbc.internal.username}" />
</bean>
</beans>
我在 web.xml 中设置了spring.active.profiles:
<servlet>
<servlet-name>myapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myapp-servlet.xml</param-value>
</init-param>
<init-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</init-param>
</servlet>
我的代码结构是这样的:
//controller
@Controller
public class MyController {
@Autowired
private MyService myService;
....
}
//service implementation
@Service("myservice")
public class MyServiceImpl implements MyService {
@Autowired
DBService dbService;
}
//db service
@Service("dbservice)
public class DBServiceImpl implements DbService {
@Autowired
public void setDataSource (Datasource ds) {
this.jdbcTemplate = new JdbcTemplate(ds);
}
}
错误:
创建名为“myController”的 bean 时出错:注入 自动装配依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:私有 MyService 我的控制器.myService; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:
嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“dbService”的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配方法:公共无效 DBServiceImpl.setDataSource(javax.sql.DataSource);嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 为依赖项找到了类型为 [javax.sql.DataSource] 的匹配 bean: 预计至少有 1 个 bean 有资格作为 autowire 候选 这种依赖。依赖注解:{} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
【问题讨论】:
-
什么是嵌套异常? :)
-
更新 :) 似乎没有为数据源创建 bean。但我已经在 web.xml 中设置了活动配置文件...
-
您是否尝试过授予公共访问权限? '公共 DBService dbService;'
-
很遗憾,是的。这没什么区别...
标签: spring spring-mvc spring-3 autowired