`

如何在系统启动时能够调用spring的注解@Service方法

阅读更多
系统中有一个TimerTask,需要在系统启动时就执行,而该TimerTask中要用到一些Service(Service中还用到了Dao),系统是采用spring的注解的,如@Controller @Service @Repository等。

在web.xml中配置
<servlet>
	<servlet-name>smcInitServlet</servlet-name>
	<servlet-class>com.xxx.common.util.InitServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>


TimerTask就在此InitServlet中被创建执行的
MmsResendTimer mmsResend = new MmsResendTimer();
Timer mmsResendTimer = new Timer();
mmsResendTimer.schedule(mmsResend, 0, 1000 * 60 * 60);


结果是在启动系统时会报一个错
Exception in thread "Timer-0" java.lang.NullPointerException


原因是在该TimerTask中引用到了
    @Autowired
    @Qualifier("MMSTableService")
    private MMSTableService mmsTableService;


而该Service在代码执行的时候是null

解决办法1:
在spring配置文件中显式的定义一个bean
<bean class="com.xxx.MMSTableServiceImpl">


然后在TimerTask引用的时候换一种定义Service的方式:
MMSTableServiceImpl mmsTableService = (MMSTableServiceImpl)ClassPathXmlApplicationContext.getBean(MMSTableServiceImpl.class);



解决办法2:
在InitServlet中删除创建TimerTask的代码,然后直接在spring配置文件中增加以下代码:

<bean class="com.xxx.protocolstack.mms.timer.MmsResendTimer" init-method="run"></bean>


在这里推荐使用第二种方式,比较简洁方便

不过要注意了,MmsResendTimer类里面一定要有默认的自构造方法
2
0
分享到:
评论
2 楼 di1984HIT 2014-01-14  
恩,肯定有配置的方法。
1 楼 kfc_davy 2013-05-28  
@service

@postConstructor

相关推荐

    详解Spring关于@Resource注入为null解决办法

    主要介绍了详解Spring关于@Resource注入为null解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    icomponent:在接口上增加了对Spring的@Component注释的支持

    Spring作为组件的接口该库在接口上添加了对Spring的@Component注释的支持: @Componentpublic interface Dummy { void dummy ();} 对于这样的接口,框架构建了一个代理对象,该代理对象将方法调用路由到方法处理程序...

    springboot学习思维笔记.xmind

    @Bean注解在方法上,声明当前方法的返回值为一个Bean AOP @Aspect 声明是一个切面 拦截规则@After @Before @Around PointCut JoinPoint Spring常用配置 Bean的Scope Singleton ...

    spring与cxf整合开发

    服务器端被调用的类上要加注解@WebService,否则访问http://localhost:8080/cxf_spring_service/mm/cxf?wsdl时看不到方法和参数 2.在cmd中输入wsdl2java http://localhost:8080/cxf_spring_service/mm/cxf?wsdl报...

    高级开发spring面试题和答案.pdf

    为什么同一个类A调用b方法事务,A方法一定要有事务(编码式的不用) @transaction多个数据源事务怎么指定数据源 传播特性有几种?7种; 某一个事务嵌套另一个事务的时候怎么办? REQUIRED_NEW和REQUIRED区别 Spring...

    springCloud

    Spring Cloud简介 Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud ...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    基于go-cqhttp和java的qq机器人.zip

    基于go-cqhttp和java的qq机器人.zip 使用前 在 Mrs4s/go-cqhttp/releases ...所有事件注解的参数都是限制该注解是否生效的依据,当全部满足时才会调用该注解所对应的方法,不同事件可注入的对象不同,具体见下方 ......

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    【Spring】总结Spring整合Mybatis的底层原理实现步骤

    Dao:数据访问层,提供让Service层调用的接口,更大的时候,Dao层可以是一个项目。 sqlSession.getMapper();使用的是JDK的动态代理 使用时 自定注入的条件:要被Spring管理。被Spring管理的对象叫做Bean @...

    Spring中文帮助文档

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    Spring.html

    ClassPathXmlApplicationContext:使用这个工厂创建对象,他会根据scope智能判断是否懒加载,如果是单例则创建容器时就会创建里面bean的实例,如果是多例在获取使用时才会创建bean实例 ...

    21道Java Spring MVC综合面试题详解含答案(值得珍藏)

    强化注解的使用,在控制器、Service、Dao都可以使用注解,方便灵活。 Spring MVC的工作流程如下: 用户通过视图层发送请求到服务器。 在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理...

    Spring API

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    大数据SpringBoot进销存管理系统(详细文档+完整源码+部署视频).zip

    1. **Controller**: - **位置**:`controller` 文件夹 ... - **详细解析**:Controller 接收来自前端的请求,根据业务逻辑调用相应的服务(Service),...在 Spring Boot 中,通常使用 `@Service` 注解标识这些类。 3.

    Spring AOP配置源码

    以上结合起来意思就是在调用com.spring.service包或子包下的所有方法之前或之后或抛出异常时依次调用id为logIntercepter的类中的before after exception方法 测试用例 package com.spring.test; import javax....

    BOS 技术整理

    在 PLSQL Developer 启动,配置 oracle instanceclient 目录 4、 默认 PLSQL Developer 连接 Oracle 使用客户端字符集 utf-8 , 基于工具使用 SQL 插入中文有乱码问题,设置客户端字符集 gb2312 配置 环境...

    spring_MVC源码

    -- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt; 14. &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; 15. 16. &lt;!-- 对模型视图名称的解析...

    SpringSecurity 3.0.1.RELEASE.CHM

    18.2. 在Spring Security里使用LDAP 18.3. 配置LDAP服务器 18.3.1. 使用嵌入测试服务器 18.3.2. 使用绑定认证 18.3.3. 读取授权 18.4. 实现类 18.4.1. LdapAuthenticator实现 18.4.1.1. 常用功能 18.4.1.2. ...

    Yin.RPC:我的梦想RPC

    Introduction ...在服务端的Service下添加你自己的Service,并加上@Service注解 @Service public class TestService { public void test(User user){ System.out.println("调用了TestService.test

Global site tag (gtag.js) - Google Analytics