- 14
- 0
- 约2.33千字
- 约 3页
- 2016-11-29 发布于重庆
- 举报
在没有spring依赖注入的类里面调用spring注解的service等
在没有spring依赖注入的类里面调用spring注解的service等
1. 问题描述
在一个BO对象里面, 比如描述团品的对象HotelGroup(是不普通类, 没有spring的注解)里面, 需要调用一个被spring注解的service, 获取一个数据, 比如, 团品下面的酒店列表, 必须调用service来获取.
2. 矛盾点
用上面提到的HotelGroup指代要调用spring注解的service的类, 用DataService指代被调用的spring依赖注入注解的service类.由于HotelGroup用来表达业务对象, 会有很多团品, 所以不应该被注解, 而DataService是个服务, 应该注解.spring的体系里面, 想要调用被注解的对象方法, 比如把自己加入到注解体系里面, 这就是普通玩法不能搞定的原因.
3.解法
关注点, 就是, 对于如何不加入spring体系, 却能调用spring的体系内的方法的回答.解法是, 创建一个注解的类, 这个类里面把DataService给做成static 的成员变量, 这样, spring体系内部的一个单件对象, 就被搞进了static区里面.我们在普通类里面调用某个类的static方法是可以简单做到的.这样我们就可以堂而皇之地在任何类里面调用这个曾经只能加入spring体系才能调用的服务.
4.实例代码
package com.qunar.des.phoenix.util;
import com.qunar.des.phoenix.entity.bo.Hotel;
import com.qunar.des.phoenix.entity.bo.HotelGroup;
import com.qunar.des.phoenix.index.DataService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 用来在非spring注解的类内部, 调用spring注解的service等代码.
* 目前没有在实际逻辑中调用.
* Created by fangxue.zhang on 2014/7/26
*/
@Service
public final class IndexUtil {
private static final Logger logger = LoggerFactory.getLogger(IndexUtil.class);
private static DataService dataService;
@Resource
public void setDataService(DataService dataService) {
IndexUtil.dataService = dataService;
}
public static ListHotel getHotels(ListString seqs) {
ListHotel hotels = new ArrayListHotel();
for (String seq : seqs) {
Hotel hotel = dataService.getHotel(seq);
if (hotel != null) hotels.add(hotel);
else {
logger.warn(null hotel for seq : {}, seq);
}
}
return hotels;
}
public static DataService getDataService() {
return dataService;
}
public static ListHotelGroup getHotelGroups(ListLong teamIds) {
ListHotelGroup hotelGroups = new ArrayListHotelGroup();
for (Long t
您可能关注的文档
最近下载
- XCT80L6_1汽车起重机技术规格书.pdf VIP
- 索尼SW7600GR中文说明书.pdf
- 2026年时事政治测试题库100道附参考答案(完整版).docx VIP
- 儿科抢救药品临床应用与管理.pptx VIP
- 河北广谋新材料科技有限公司年产600万平方米复合革及隔音布、400万平方米新型复合网项目环境影响报告表.docx VIP
- 部编版语文五年级下册第七单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第六单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第五单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第四单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第三单元教材解读大单元集体备课.pptx VIP
原创力文档

文档评论(0)