项目中遇到问题大概是这样的:
有一个类Cat,之前因为只有这一个类就直接自动注入交给Spring管理的
@Service("catService")
public class CatService {
private String color;
public void setColor(String color) {
this.color =color;
}
public String getColor(String color) {
return this.color;
}
}
在别的地方用的时候我就直接
@Autowired
private CatService catService;
来使用这个对象。现在因为项目要求,要增加 白猫、黑猫、蓝猫等几种猫。我开始的想法是把CatService 复制几份,每份修改一下配置,几个不同的类对象自动注入。但是这样代码重复率太高了。
于是我想能不能注入几个不同配置的CatService类对象到spring容器,然后根据配置的color来获取需要的实例bean对象。
大概思路:
1、CatService 根据不同配置创建几个对象实例(对象实例内部有依赖注入)
2、将1中产生的对象都注册到spring容器中
3、使用的时候根据工厂模式组装 服务名称 来获取到对应的服务实例。
因为项目中的CatService实际上本身也有自动注入spring中其他对象,所以我参考
https://blog.csdn.net/cgengwei/article/details/79419305
实现 自己new的对象也支持内部的自动注入,到此我就获取到了 白猫、黑猫、蓝猫等几种猫的不同实例对象。
然后参考https://blog.csdn.net/lzjqcc/article/details/78114859
将刚刚的几个实例对象注册到spring容器,这样我在使用的时候根据服务名直接获取对应的bean
参考:https://blog.csdn.net/lovelovelovelovelo/article/details/73733550 根据服务名来获取对应的bean
这样一来就要在spring启动时候自己new几个CatService 对象后手动注册到spring中去。
我想问一下这种场景有什么好的处理模式、方法吗?
如果按我的解决方法去处理 的话 我应该在什么时候创建这几个对象并注册到spring容器呢?我是用的springboot。
在spring beanfactory初始化依赖注入的bean后我再创建bean注册到spring
麻烦大家指点下