领域驱动模型, 让实体类有了一部分的业务方法, 那么在实体类中 @Autowired 一个 Dao 或者 MyBatis Mapper就不成功啊, 因为这个实体类不是 Component, 实体类都是 new 着用的
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
class Role{
private Long id;
private String name;
//getter/setter
//some method
@Autowired
private RoleMapper roleMapper;
public boolean isBindMenu(){
roleMapper.xxxxx();
}
}
在其他地方如service中, 不能 new Role()啊, RoleMapper 注入不进来
我不建议过早的把DDD的model的实现基于某一个framework来做,先实现model,而框架最好在某一个部分使用,简单的把entity认为是POJO + service的实现更是比较可笑和不理解真正ddd精髓的做法。DDD不是具体依赖某种语言进行实现的,那么加入换成ruby或者php怎么办?更何况spring并不是DDD的framework。所以,我的建议是试图理解如何设计model和实现的。更重要的是,把ddd的某一个buiding block单独拿出来使用那是完全错误的,完整的应用这些buiding block保证了你如何可以是一个相关领域业务逻辑的实现是高度偶尔,保证business state的准确性和非多样性。