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; } }
朱雀桥边野草花,乌衣巷口夕阳斜。
旧时王谢堂前燕,飞入寻常百姓家。
浙公网安备 33010602011771号