方法用于替换容器静态变量,从而让代码更优雅:
如下场景从代码角度来说,不够好看:
public class SpringUtils implements ApplicationContextAware {
public static ApplicationContext applicationContext = null;
tthis.applicationContext =xxx
getBean(class xxx);
}
public void doBusiness{
public void fun(){
SpringUtils.getBean(class xxx);
}
改良版本,也没啥,用set+Autowired注解。可以很方便的做一些mapper的通用方法,特别适用mybatis-plus的场景,此类代码较为冗余,可能还有不少易错的字段,排序等方面的硬编码,多处使用抽取成一个工具类是个不错的代码复用办法,静态的mapper对象+静态方法,代码使用起来很美观(个人观点,不代表他人)。:
@Component
public class DiscussRelationHelper {
private static SuperviseDiscussActivityMapper superviseDiscussActivityMapper;
private static SuperviseDiscussReportMapper superviseDiscussReportMapper;
public static Map<String, List<SuperviseDiscussActivity>> findDiscussReportMap(List<SuperviseDiscuss> discusses) {
...
SuperviseDiscussActivityMapper.selectXXX();
...
return XXX;
}
public static Map<String, List<SuperviseDiscussReport>> findDiscussActivityMap(List<SuperviseDiscuss> discusses) {
...
superviseDiscussReportMapper.selectXXX();
...
return xxx;
}
@Autowired
public void setSuperviseDiscussActivityMapper(SuperviseDiscussActivityMapper superviseDiscussActivityMapper) {
DiscussRelationHelper.superviseDiscussActivityMapper = superviseDiscussActivityMapper;
}
@Autowired
public void setSuperviseDiscussReportMapper(SuperviseDiscussReportMapper superviseDiscussReportMapper) {
DiscussRelationHelper.superviseDiscussReportMapper = superviseDiscussReportMapper;
}
}
@Override
public Page<SuperviseTransactionListVo> findSuperviseTransactions(SuperviseProjectQuery query) {
....
// 查询项目相关活动
Map<String, List<SuperviseDiscussActivity>> projectDocument = DiscussRelationHelper .findDiscussActivityMap(projectIds);
// 查询项目相关报道
Map<String, List<SuperviseDiscussReport>> projectReport = DiscussRelationHelper .findDiscussReportMap(projectIds);
...
}