ervice注解无效-@Service注入无效,但是通过Controller进来的可以成功,这是为啥?

问题描述

@Service注入无效,但是通过Controller进来的可以成功,这是为啥?

spring MVC+Spring+Mybatis的架构
我的扫描配置如下:

 <context:component-scan base-package="com.pp.susf">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
    </context:component-scan>
在一个类中使用如下注解注入不可行:
@Autowired
private ITestService testService;

而在Controller中
    @Autowired
private ITestService testService;
则调用正常

解决方案

是不是你的类上没有写注解@Service

解决方案二:

补充说明一下,我是用spring加了个任务调度的listener,
我是在listener类中注解的哪些Service,是不是因为这个原因?
web.xml中的调度listener:

<!-- 定时任务 -->

com.xsscd.unionpay.listener.WatchingTaskStatusListener

 任务调度类:
 public class WatchingTaskStatusTimerTask extends TimerTask {

    private static Logger log = Logger.getLogger(WatchingTaskStatusTimerTask.class);

    @Autowired
    private ITaskStatusMonitor taskStatusMonitor;

    @Autowired
    private ITestService testService;

    @Override
    public void run() {
        try {
            // 在这里写要执行的内容
            System.out.println("timeTask start run :"+new Date().toLocaleString());

            System.out.println(testService.test3()); **_//testService为空_**
                //启用到点任务
            if (taskStatusMonitor==null) {
                System.out.println("taskStatusMonitor  that get by @Autowired is null");

                taskStatusMonitor = (TaskStatusMonitor) SpringUtil.getBean("taskStatusMonitor");
                if (taskStatusMonitor==null) {
                    System.out.println("taskStatusMonitor that get by bean name  is null");
                    taskStatusMonitor.activateTask();
                    taskStatusMonitor= new TaskStatusMonitor();
                }
            }
            taskStatusMonitor.activateTask();

解决方案三:

public class WatchingTaskStatusTimerTask extends TimerTask 这里的前面有@Service吗

解决方案四:

我大概知道原因了,我发现项目启动时,listener对象是先于哪些注解bean被解析的(不晓得这么说用词是否准确),就感觉这个时候listener的注解bean没有和listener对象挂钩,后面定时任务调用执行的时候也没有。
我的解决办法是直接通过类名来获取的spring bean对象
可以解决当前业务问题了。
后面需要专门研究下,spring的东西太多要理解了,我了解的还不够

时间: 2024-11-03 17:01:15

ervice注解无效-@Service注入无效,但是通过Controller进来的可以成功,这是为啥?的相关文章

SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable

SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable 我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat版本:apache-tomcat-7.0.26 前置文章-SpirngMVC配置入門 http://www.cnblogs.com/sunang/p/

c#-C#用windows service 服务从云上下载照片,之前一直成功,后来报错如下

问题描述 C#用windows service 服务从云上下载照片,之前一直成功,后来报错如下 The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. at System.Convert.FromBase6

ssh中把service注入到action,为什么不能注入service的实现类

问题描述 在网上看到这样一句话:"把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中",确实如此,比如UserServiceImpl实现了接口UserService,当我在UserAction中写private UserServiceImpl userService;@Resourcepublic void setUserService(UserServiceImpl userService) {this.user

Spring开发 - 通过实现ApplicationContextAware在Servlet中调用注解的Service

用过Spring MVC的人都知道,我们如何在Controller中注入Service,可以使用@Resource注解的方法. 有时候,实际在项目的过程中,我们需要在某个Servlet中使用Service, 但是由于Spring MVC中的Servlet都是由 DispatcherServlet统一管理的,因此,像Controller方式的注解方式注入在普通的Servlet中是行不通的. 本文介绍通过实现ApplicationContextAware的方法在你自己的Servlet中也可以很轻松地

elphi 浮点无效-Delphi提示无效的浮点数

问题描述 Delphi提示无效的浮点数 ML[i][j]:=2*abs(ln(MaxLH[i])-ln(MaxLH[j])) 解决方案 i,j不能为0ln(0)和n/0一样,没有意义. 解决方案二: 我说错了,是MaxLH[i]不能为0 解决方案三: ML[i][j]:=2*abs(ln(MaxLH[i])-ln(MaxLH[j])) 这个和你的i,J的值有关,你在delphi里单步调试一下,看一下i J的值,以及表达式的值,就明白问题出在哪里了

加入了&amp;amp;lt;aop:aspectj-autoproxy proxy-target-class=&amp;amp;quot;true&amp;amp;quot; /&amp;amp;gt;spring无法为Action中的service注入

问题描述 如题怎么的啊?搞了一天..其实就是想实现个权限拦截..以前没做过权限拦截这块..现在必须要弄..老火啊,,求助各位大侠了..在线等答案啊 解决方案 解决方案二:packagecom.zz.action.admin;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.Around;importorg.aspectj.lang.annotation.Aspect;importorg.asp

java中SpringMVC中@PathVariable注解的XSS注入问题

 XSS注入算是一个很常见的问题,其实解决起来并不难,但是有很多需要注意的地方,这里做一个完整的解决方案.    Java中常见的解决方案是继承HttpServletRequestWrapper,然后重载getParameter.getHeader等方法.但是要注意到文件上传是不走HttpServletRequestWrapper的,所有还需要解决文件上传时的xss问题.如果用SpringMVC,那么直接继承CommonsMultipartResolver即可. 如果使用了url中部分path(

as flex js j uery-怎么用flex转化jQuery的这个页面

问题描述 怎么用flex转化jQuery的这个页面 这个是用js写的一个虚拟键盘 现在项目要用 求前辈知道这个页面用flex怎么做出来 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 虚拟键盘 function test(){ VirtualKeyboard.t

jdbcdaosupport-Spring mvc 空指针错误

问题描述 Spring mvc 空指针错误 LoginController @Controller public class LoginController { @RequestMapping("test") public void login() { LoginServiceImp loginService = new LoginServiceImp(); loginService.loadUserInfo(); } } LoginServiceImp public class Lo