Как динамически получить бин во время выполнения? - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь использовать компонент, созданный во время запуска, и использовать его во время выполнения;оба класса стереотипны, но находятся в разных пакетах.Я не могу на всю жизнь восстановить redisSession с @ Autowired

@ConfigurationProperties(prefix = "redis")
@Configuration
@ConditionalOnProperty(name = "redis.enabled", havingValue = "true")
public class RedisSession {
private static Logger log = LoggerFactory.getLogger(RedisSession.class);
private String hostname;
private int port;
private String password;
private StatefulRedisConnection redisConnection;
private RedisClient redisClient;

@Bean
public RedisAsyncCommands asyncRedisSession() {

    RedisURI redisURI = RedisURI.builder()
            .withHost(hostname)
            .withPort(port)
            .withPassword(password)
            .build();
    redisClient = RedisClient.create(redisURI);
    redisConnection = redisClient.connect();
    return redisConnection.async();
}

(отдельный пакет)

@Component
public class RedisFieldMappers {

    @Autowired
    RedisAsyncCommands redisSession; //redisSession is null
    public HashMap<String, HashMap<String, Object>> getColumnDetails(ArrayList idList,
                                                             String redisSetPrefix, Map<String, String> redisMapper,
                                                             String... fieldNames) throws ExecutionException,
                                                             InterruptedException {
     redisSession.hgetall("foo"); //redisSession is null
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...