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:'((再次感谢!