Java 根据属性文件中的设置,如何强制服务使用特定的存储库?
我将Java 根据属性文件中的设置,如何强制服务使用特定的存储库?,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我将VM选项设置为-Dmyapp.conf=config/my.properties。我需要使用此文件内容来选择要使用的存储库。我用弹簧靴 有服务,现在它提供的无法自动连线。有多个“MyRepository”类型的bean: @Service public class MyServiceImpl implements MyService { @Autowired private MyRepository repository; ...} 存储库: public interfa
VM选项设置为-Dmyapp.conf=config/my.properties
。我需要使用此文件内容来选择要使用的存储库。我用弹簧靴
有服务,现在它提供的无法自动连线。有多个“MyRepository”类型的bean
:
@Service
public class MyServiceImpl implements MyService {
@Autowired
private MyRepository repository;
...}
存储库:
public interface MyRepository {...}
@Repository
public class MyRepositoryImpl01 implements MyRepository {...}
@Repository
public class MyRepositoryImpl02 implements MyRepository {...}
你可以为此目的使用
@Profile("profile1")
@Repository
public class MyRepositoryImpl01 implements MyRepository {...}
@Profile("profile2")
@Repository
public class MyRepositoryImpl02 implements MyRepository {...}
然后在属性文件中,您需要:spring.profiles.active=profile1
或spring.profiles.active=profile2
您可以用于此目的
@Profile("profile1")
@Repository
public class MyRepositoryImpl01 implements MyRepository {...}
@Profile("profile2")
@Repository
public class MyRepositoryImpl02 implements MyRepository {...}
然后,在您需要的属性文件中:<代码> Spring .Prrase.Active=Prrule1> />代码> Spring .Prrase. Active=Prrule2./P>> P>我实际上会考虑在某些java配置中使用这种逻辑(一个用@配置的注释),而不是在两个(或可能是n个)库中。p>
您可以使用,并在这个Java配置中封装这个“存储库选择”的整个逻辑。这将是一个好处,因为您只具有指定类型的1 bean,如果您的库连接到某些配置选项不可用的数据库,那么这将是有益的。 我实际上会考虑在某些java配置中使用这种逻辑(一个用@配置的注释的类)比在两个(或可能n)中都有这个逻辑。存储库
您可以使用,并在这个Java配置中封装这个“存储库选择”的整个逻辑。这将是一个好处,因为您将只有一个指定类型的bean,如果您的存储库连接到某些配置选项不可用的数据库,这将非常有用。谢谢,这似乎是我想要的!还有一件事:如何不是从-Dspring.profiles.active=“myProfile”
而是从文件激活配置文件-Dmyapp.conf=config/my.properties
将属性spring.profiles.active
添加到您的属性文件啊,问题在于重命名了application.properties:((再次感谢!谢谢,这似乎是我在寻找的!还有一件事:如何不从-Dspring.profiles.active=“myProfile”激活配置文件)
但是从文件?-Dmyapp.conf=config/my.properties
将属性spring.profiles.active
添加到您的属性文件中啊,问题在于重命名的application.properties:'((再次感谢!