【spring】不修改原代码修改controller中注入的service
背景
公司的用户中心封装成jar包,现有需求在插入用户表的同时需要将数据插入用户扩展表。
因为修改jar包比较麻烦,所以需要其他方法
代码
controller
@RestController
public class AController {
@Resource
private IAService aService;
@GetMapping("/a")
@ResponseBody
public int a() {
return aService.a();
}
}
service
@Service
public class AServiceImpl implement IAService {
public int a() {
return 1;
}
}
新建一个类继承AServiceImpl,增加@Primary注解,重写a()方法
@Primary
@Service
public class AExtendServiceImpl extends AServiceImpl {
@Override
public int a() {
return 2;
}
}
此时调用AController中的a()方法时,返回值为2。