2

I have a Spring-boot application with 2 Datasources.

application.properties

spring.datasource.url= jdbc:postgresql://localhost:5432/data1
spring.datasource.username=postgres
spring.datasource.password=pass

spring.secondDatasource.url= jdbc:mysql://localhost:3306/data2
spring.secondDatasource.username=root
spring.secondDatasource.password=pass


spring.jpa.hibernate.ddl-auto=create-drop

DataBaseConfiguration.java

@Configuration
public class DatabaseConfiguration {

    @Bean
    @Primary
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource primaryDataSource() {
         return DataSourceBuilder.create().build();
    }

    @Bean   
    @ConfigurationProperties(prefix="spring.secondDatasource")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }
}

MessageRepository.java

public interface MessageRepository extends CrudRepository<Message, Long>{

}

MessageController.java

@Controller
@RequestMapping("/messages")
public class MessageController {

    @Autowired  
    private MessageRepository repositoryPostGreSQL;

    @RequestMapping(value="", method = RequestMethod.GET)
    public String listPosta(Model model){
        model.addAttribute("messages", repositoryPostGreSQL.findAll());
        return "messages/list";
    }
}

It is working fine, the 2 Databases are connected and working.

What I need to know is that when I @Autowire a Repository how do I specify witch DataSource should be linked?

José Mendes
  • 950
  • 2
  • 14
  • 30

0 Answers0