Я пытаюсь написать функцию микронавта, которая развертывается как AWS Lambda.
С моей функцией micronaut мне нужно подключиться к нескольким базам данных, получить данные и поместить данные в AWS SQS. В связи с этим я пытаюсь использовать шаблонный подход JDB C для получения данных из разных источников данных. Но я получаю сообщение об ошибке: Обнаружено несколько возможных кандидатов в bean-компоненты: [org.springframework.jdb c .core.JdbcTemplate, org.springframework.jdb c .core.JdbcTemplate, org.springframework.jdb c .core.JdbcTemplate] ошибка
package io.test.invoice;
import io.micronaut.context.annotation.Factory;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.inject.Named;
import javax.inject.Singleton;
import javax.sql.DataSource;
@Factory
public class JdbcTemplateFactory {
@Singleton
JdbcTemplate jdbcTemplateOne(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Singleton
JdbcTemplate jdbcTemplateTwo(@Named(value = "database2") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
package io.test.invoice;
import io.micronaut.context.annotation.Requires;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.inject.Singleton;
import java.util.List;
@Singleton
@Requires(beans = JdbcTemplate.class)
public class CodeSetRepository {
private final JdbcTemplate jdbcTemplateOne;
private final JdbcTemplate jdbcTemplateTwo;
public CodeSetRepository(JdbcTemplate jdbcTemplateOne, JdbcTemplate jdbcTemplateTwo) {
this.jdbcTemplateOne = jdbcTemplateOne;
this.jdbcTemplateTwo = jdbcTemplateTwo;
}
public List<CodeSet> getAllCodeSets() {
String SELECT_QUERY = "SELECT * FROM public.code_set";
return this.jdbcTemplateTwo.query(SELECT_QUERY, new BeanPropertyRowMapper(CodeSet.class));
}
public List<Country> getAllCountries() {
String SELECT_QUERY = "SELECT * FROM public.country";
return this.jdbcTemplateOne.query(SELECT_QUERY, new BeanPropertyRowMapper(Country.class));
}
}
Может ли кто-нибудь помочь с этим, пожалуйста?