Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida no Ex. 7 da Aula 3 - Desafio Parte 3: Shared Database

Em uma aplicação utilizando o Camel com o Spring-Boot, extendendo as classes com SpringRouteBuilder, o Spring cuida com CamelContext, seguindo o principio da inversão de controle. Mas em uma situação igual a deste exercicio onde que precisa criar um registro que recebe o DataSource do MySQL no metodo main e depois passar esse registro para o construtor da classe DefaultCamelContext:

SimpleRegistry registro = new SimpleRegistry(); registro.put("mysql", criaDataSource()); CamelContext context = new DefaultCamelContext(registro);//construtor recebe registro

Utilizando o Spring-boot com o Camel, como seria feito esse procedimento?

6 respostas

Oi André,

Confesso que eu não fiz isso ainda, mas sei que o SpringRouteBuilder se baseia no ApplicationContext do Spring.

Ou seja, se vc configura o DataSource normalmente no Spring, vc deve ter acesso nele dentro da sua rota.

Sei que falei pouco, mas é isso que eu sei :(

abs

Fiz um pouco diferente, consegui hoje fazer funcionar. Vou postar como eu fiz, p/ caso algum aluno precise:

@Configuration
public class RegisterDB {

     @Autowired
     CamelContext camelContext;

     @Bean
     public CamelContext getCamelContext() {
        SimpleRegistry register = new SimpleRegistry();
        register.put("mysql", ConnectionDB.createDataSource());
        CamelContext camelContext = new DefaultCamelContext(register);
        return camelContext;
    }
}

Ótimo!!!

só não precisa mais injetar o CamelContext:

@Autowired CamelContext camelContext;`

Não preciso usar o inject???

solução!

Precisa nas outras classes, mas dentro da classe RegisterDB não.

abs

Valeu Nico, agora ficou show.