我有两个名为PowerUserManager和 的服务 bean SimpleUserManager。两个带@Service注释的类都有大约20% 的代码是共同的。
我已经构建了一个带有公共抽象类 ( BaseUserManager)的继承树,以减少两个类之间的冗余。
BaseUserManager
|
---------------
| |
PowerUserManager SimpleUserManager
Run Code Online (Sandbox Code Playgroud)
然后在我的@Controller或任何客户端类中,我使用@Autowired注释来注入两者PowerUserManager,SimpleUserManager并根据我正在处理的用户实例使用其中之一。
我不习惯使用继承来分解代码,尤其是在服务层。你们 Spring 伙伴们有没有看到更好的方法来做到这一点?
我尝试使用实体框架与代码优先和流畅的API来实现一对多关系
一方面,我有ClassDefinitionEntity类:
public class ClassDefinitionEntity{
public string LocalClassIsin { get; set; }
public ICollection<PcfPublishingDefinitionEntity> PublishingDefinitions { get; set; }
public ClassDefinitionEntity()
{
PublishingDefinitions = new List<PcfPublishingDefinitionEntity>();
}
}
Run Code Online (Sandbox Code Playgroud)
在许多方面,PcfPublishingDefinitionEntity类:
public class PcfPublishingDefinitionEntity
{
public int ClassId { get; set; }
public ClassDefinitionEntity ClassDefinition { get; set;}
public PcfFormatEnum Format { get; set; }
public PcfPublishingChannelEnum Channel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的列名称不遵循实体约定,因此OnModelCreating中的代码如下所示:
protected override void OnModelCreating(DbModelBuilder modelBuilder){
...
modelBuilder.Entity<PcfPublishingDefinitionEntity()
.ToTable("IFM_PCF_PUBLISHING_DEFINITION");
modelBuilder.Entity<PcfPublishingDefinitionEntity>()
.HasKey(e => new …Run Code Online (Sandbox Code Playgroud)