Java 本地或远程存储库,具体取决于配置
我正在创建的api将提供有关电影的信息。我想从两个来源获取有关电影的信息:Java 本地或远程存储库,具体取决于配置,java,spring,Java,Spring,我正在创建的api将提供有关电影的信息。我想从两个来源获取有关电影的信息: DB,其中将填充一些示例数据 远程API 我将在属性文件中设置标志,用于exmample fetch_from_remote=true/false 我的问题是如何组织我的项目。我想到了下面的代码。我将在MovieRepo(LocalRepo或RemoteRepo)的两个实现中的一个注入MovieService,具体取决于flag。但我不是舒尔,它是否有效,是否良好?你有什么建议/更好的主意吗 MovieControlle
public class MovieController{
MovieService MovieService;
Movie getMovie(int id){
MovieService.getMovie(id);
}
}
电影定位类
public interface MovieRepository{
Movie getMovie(int id);
}
RemoteRepo.class
public class RemoteRepo implements MovieRepoisotry (
public getMovie(int id){
// implemenatation to connect to remotApi and fetchData
}
)
public interface LocalRepo extends MovieRepository,JpaRepository<ChatMessage, Integer>{
}
LocalRepo.class
public class RemoteRepo implements MovieRepoisotry (
public getMovie(int id){
// implemenatation to connect to remotApi and fetchData
}
)
public interface LocalRepo extends MovieRepository,JpaRepository<ChatMessage, Integer>{
}
我不是舒尔,它是否能工作:那你为什么不测试它呢?看看
@conditionalnproperty
,让spring基于属性为你创建bean。@JBNizet测试它需要一些时间,我想避免浪费时间,即使它能工作,也许有更好的方法problem@michalk谢谢我建议不要在属性文件中设置标志“fetch_from_remote”,而是设置它并从某个数据库表中读取它。这样您就不必进入代码或属性文件进行更改。若数据库表中为null,则可以运行一些默认函数/方法。希望这能有所帮助。我不是舒尔,它是否能工作:那你为什么不测试它呢?看看@conditionalnproperty
,让spring基于属性为你创建bean。@JBNizet测试它需要一些时间,我想避免浪费时间,即使它能工作,也许有更好的方法problem@michalk谢谢我建议不要在属性文件中设置标志“fetch_from_remote”,而是设置它并从某个数据库表中读取它。这样您就不必进入代码或属性文件进行更改。若数据库表中为null,则可以运行一些默认函数/方法。希望有帮助。