SpringBoot注入Service失败

Description:

The bean ‘userService‘ could not be injected as a ‘com.phy.hemanresoruce.service.UserService‘ because it is a JDK dynamic proxy that implements:

Action:

Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

1.

根据上面描述,注入userServiceImpl这个Bean时失败,(失败的原因就是实现接口,而springboot的事务默认是使用jdk的动态代理,即基于接口))。在action层中注入的Bean是实现类,因此就会报错。

解决:将此注入Bean的方式改成了其接口

2.

Action:
Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

再看一下idea给的建议:可以考虑下将action中注入的Bean改成接口方式或者强迫事务使用CGLib代理方式(基于类,即设置proxyTargetClass=True在启动事务管理上@EnableTransactionManagement(proxyTargetClass=True)),这种以CGLib代理方式进行,按照之前写法,应该是需要引入相应的cglib库的jar包。而在springboot中已经集成了。

原文地址:https://www.cnblogs.com/phyqxx/p/11572239.html

时间: 2024-10-10 16:39:25

SpringBoot注入Service失败的相关文章

Spring注解问题,[action中注入service失败

pring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/X

如何在Java Filter 中注入 Service

在项目中遇到一个问题,在 Filter中注入 Serivce失败,注入的service始终为null.如下所示: public class WeiXinFilter implements Filter{ @Autowired private UsersService usersService; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOExc

mySQL start service失败终极解决办法

start service失败  原因是电脑没删干净.具体1.先卸载2.计算机"搜索"所有MySQL文件  注意隐藏文件也可以搜索出来全部删除.3.清除注册表MySQL及子项.4.防火墙的问题 不要勾选add-port.5.安装时可以换MySQL版本 及的端口号.花了我很多时间终于安装成功!总结就谢谢问题!手机写的博客,但是这篇很值得写,希望能帮助博友.坑跳了一遍!??

Myeclipse插件快速生成ssh项目并配置注解 在action层注入service的超详细过程

最近发现,我对于ssh的 自动注入配置 还是不熟悉,于是整理了一下 终于做了一个 简单的 注入配置出来. 以前都是在applicationContext.xml 里面这样配 <bean id="loginAction" class="com.dj.ssh.action.LoginAction" scope="prototype" autowire="byName"> <property name="

关于如何在Listener中注入service和ServletContextListener源码分析

今天在做项目时突然发现我该如何向listener中注入service对象,因为监听器无法使用注解注入. 此时有人会想用以下代码通过xml的方式注入: ApplicationContext context=new ClassPathXmlApplication(*.xml); productService =(ProductService)context.getBean("productService"); 这样的话会导致一个问题,那就是Tomcat会两次加载spring的配置文件.所以

Spring容器启动后注入service到Servlet并自动执行

通常做法是定义一个Servlet,并在web.xml中配置Servlet的启动顺序<load-on-startup>的值在DispatcherServlet之后.但这样做的缺点是在Servlet中无法使用Spring的依赖注入功能,只能使用WebApplicationContext的getBean()方法获取bean. 找到的解决办法如下: 1.自定义一个用于代理启动Servlet的类DelegatingServletProxy: package cn.edu.swu.oa.common.ut

Spring Task中的定时任务无法注入service的解决办法

1.问题 因一个项目(使用的是Spring+SpringMVC+hibernate框架)需要在spring task定时任务中调用数据库操作,在使用 @Autowired注入service时后台报错,导致系统不能访问. 2.代码 定时任务的代码如下: @Componentpublic class TaskJob {        Logger logger = Logger.getLogger(TaskJob.class);        @Autowired    private TempSe

Jax-ws 开发webService ,并使用spring注入service类中遇到 空指针

一般情况下,使用eclipse自带的 jax-ws 生成webservice 会自动生成2个类: ContractConnector.java package com.wonders.webservice.contract; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.dom

springboot拦截器注入bean失败实例

如题,在spring拦截器中注入了一个service,结果运行时报了空指针: 2020-01-03 09:26:33.646 |-DEBUG [http-nio-9988-exec-3] org.springframework.web.servlet.DispatcherServlet [1100] -| Failed to complete request: java.lang.NullPointerException 2020-01-03 09:26:33.648 |-ERROR [http