如果service有了@Transactional事务注解,就会注入失败

wq595170292 2016-09-28 12:15:30
如果直接用单元测试,使用@Resource 注入就很正常,但是一旦放到Controller内,就会报错。
报错:

[WARNING] unavailable
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sysLogContorller' defined in file [E:\Java\Ladybug\multi_spring\multi_project_web\src\main\webapp\WEB-INF\classes\cc\ladybug\web\controller\admin\system\SysLogContorller.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sysLogService' is expected to be of type [cc.ladybug.multi.service.SysLogService] but was actually of type [com.sun.proxy.$Proxy85]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
。。。
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sysLogService' is expected to be of type [cc.ladybug.multi.service.SysLogService] but was actually of type [com.sun.proxy.$Proxy85]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:378)
... 71 more
[WARNING] Failed startup of context o.e.j.m.p.JettyWebAppContext@5a3a1bf9{/,file:///E:/Java/Ladybug/multi_spring/multi_project_web/src/main/webapp/,UNAVAILABLE}{file:///E:/Java/Ladybug/multi_spring/multi_project_web/src/main/webapp/}
javax.servlet.ServletException: dispatcher@b7ba1aa7==org.springframework.web.servlet.DispatcherServlet,1,false
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:655)
。。
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sysLogContorller' defined in file [E:\Java\Ladybug\multi_spring\multi_project_web\src\main\webapp\WEB-INF\classes\cc\ladybug\web\controller\admin\system\SysLogContorller.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sysLogService' is expected to be of type [cc.ladybug.multi.service.SysLogService] but was actually of type [com.sun.proxy.$Proxy85]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
... 51 more
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sysLogService' is expected to be of type [cc.ladybug.multi.service.SysLogService] but was actually of type [com.sun.proxy.$Proxy85]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:378)
... 71 more
...全文
971 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wq595170292 2016-09-28
  • 打赏
  • 举报
回复
Service的代码:

@Service
public class SysLogService extends BaseService<SysLog, SysLogMapper> {
	private @Resource SysLogMapper sysLogMapper;

	@Override
	@Transactional
	public int insert(SysLog record) {
		record.setCreateTime(new Date());
		super.insert(record);
		return Integer.valueOf("dd");
	}
}
wq595170292 2016-09-28
  • 打赏
  • 举报
回复
配置:

@Order(2)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@ComponentScan("cc.ladybug.multi.service")
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig implements EnvironmentAware, TransactionManagementConfigurer {
	protected final Logger logger = LoggerFactory.getLogger(getClass());
	private Environment env;

	/**
	 * 装载数据库配置文件
	 */
	@Override
	public void setEnvironment(Environment environment) {
		this.env = environment;
	}

	/**
	 * mysql事务管理
	 * @return
	 */
	@Bean
	@Override
	public PlatformTransactionManager annotationDrivenTransactionManager() {
		return new DataSourceTransactionManager(masterDataSource());
	}

	/**
	 * MyBatis 数据连接地址池配置
	 * @throws IOException
	 * @throws SQLException
	 */
	@Bean(name = "masterDataSource", destroyMethod = "close")
	public DruidDataSource masterDataSource() {
		DruidDataSource dataSource = new DruidDataSource();
。。。
		return dataSource;
	}

	/**
	 * MyBatis配置 :配置sqlSessionFactory
	 * @return
	 * @throws Exception
	 */
	@Bean(name = "masterSqlSessionFactory")
	public SqlSessionFactory masterSqlSessionFactory() throws Exception {
。。。
		return sqlSessionFactoryBean.getObject();
	}

	@Bean(name = "masterMapperScannerConfigurer")
	public MapperScannerConfigurer masterMapperScannerConfigurer() {
。。。
		return mapperScannerConfigurer;
	}
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧