spring注解工厂模式实现

为了实现注解方式的工厂模式 :不同的service实现类实现不同的需求操作

 

/*业务service*/

@Autowired

private PdfCreateService pdfCreateService;

@Autowired private PdfCreateService pdfCreateServiceTextOutput;

1. spring先找类型为PdfCreateService 的bean

2. 如果存在且唯一,return

3. 如果不唯一,在结果集里,寻找name为PdfCreateService 的bean。因为bean的name有唯一性,所以,到这里应该能确定是否存在满足要求的bean

 @Qualifier ( "name" ) 可以直接用name查找

 /**
     * @param params
     * @return
     * @desc 生成pdf接口
     */
    @RequestMapping(value = "/createPdf")
    public MyResponse createPdf(@RequestParam Map<String, Object> params) {
        logger.info("生成pdf开始");
        MyResponse response = new MyResponse();
        try {
            String code = (String) params.get("code");
            logger.info("code值是{}", code);
            if (StringUtils.isNotBlank(code)) {
                if (code.equals("template")) {
                    //模板方式替换
                    params.remove("code");
                    if (params == null || params.keySet().size() == 0) {
                        params = transferParamter(params);
                    }
                    String info = pdfCreateService.createPdf(params);
                    if (StringUtils.isNotBlank(info)) {
                        if (info.equals("true")) {
                            logger.error("生成pdf合同{}", "成功");
                            response.setCode(MyCode.CODE_PDF1001);
                            response.setData(MyCode.CODE_PDF1001.getMsg());
                        } else {
                            logger.error("生成pdf合同{}", "失败");
                            response.setCode(MyCode.CODE_PDF1002);
                            response.setData(MyCode.CODE_PDF1002.getMsg());
                        }
                    } else {
                        logger.error("生成pdf合同{}", "失败");
                        response.setCode(MyCode.CODE_PDF1002);
                        response.setData(MyCode.CODE_PDF1002.getMsg());
                    }
                    return response;
                } else if (code.equals("textOutput")) {
                    //文本方式输出
                    pdfCreateServiceTextOutput.createPdf(params);
                    return null;
                } else {
                    logger.error("不识别的code:{}", code);
                    response.setCode(MyCode.CODE_PDF1003);
                    response.setMsg(MyCode.CODE_PDF1003.getMsg());
                    return response;
                }
            } else {
                logger.error("code为空{}", code);
                response.setCode(MyCode.CODE_PDF1003);
                response.setMsg(MyCode.CODE_PDF1003.getMsg());
                return response;
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("生成pdf合同{}", "异常");
            response.setCode(MyCode.CODE_PDF1002);
            response.setData(MyCode.CODE_PDF1002.getMsg());
            return response;
        }
    }
View Code

 

posted on 2016-04-12 13:29  盖世大将军  阅读(623)  评论(0)    收藏  举报

导航