Я хочу написать загрузочный код Spring для получения данных из mongoDB с условием - PullRequest
0 голосов
/ 11 июня 2019

Я могу получить данные из MongoDB, используя следующий код, но я хочу предоставить эти данные из Runner CommandLineRunner другому классу.

@Repository
public interface ToolsDao extends MongoRepository< Tools, String> {
     public List<Tools> findByRegistries_active(boolean active);
}

Кроме того, я написал класс как с методами получения и установки сконструкторы.

public class Tools{

    @Id
    private String id;
    private String type;
    private List<Registries> registries;

И для реестров, которые у меня есть,

public class Registries {

    private String name;
    private String url;
    private String secret;
    private boolean active;

@Bean
CommandLineRunner runner(ToolsDao toolsDao) {
    return new CommandLineRunner() {
        @Override
        public void run(String... args) throws Exception {
            Registries activeRegistry = null;
            Iterable<Tools> toolsList= toolsDao.findByRegistries_active(true);
            System.out.println("Configuration : ");

            for (Tools tools : toolsList) {
                for (Registries registry : config.getRegistries()) {
                    if(registry.getActive()) {
                        activeRegistry = registry;
                        break;
                    }
                }
            }

            System.out.println("active registry name is " + activeRegistry.getName());
            System.out.println("active registry url " + activeRegistry.getRegistryUrl());

        }
    };
}

Я получаю вывод в вышеуказанной функции, но если я хочу использовать в любой другой функции, то этодавая нулевые значения.

public class RegistryController2 {
@Autowired
ToolsDao toolsDao;
public Registries getData() {
    Registries activeRegistry = null;
    Iterable<Tools> personList = toolsDao.findByRegistries_active(true);
    System.out.println("Configuration : ");

    for (Tools tools : toolsList) {
        for (Registries registry : tools.getRegistries()) {
            if(registry.getActive()) {
                activeRegistry = registry;
                break;
            }
        }
    }

    System.out.println("active registry name is " + activeRegistry.getName());
    System.out.println("active registry url " + activeRegistry.getRegistryUrl());
}

База данных MongoDB:

Given below is MongoDB Collection from database test. and collection name is switchrepo.

"_id" : "1234567890",
    "type" : "toolss",
    "registreis" : [ 
        {
            "name" : "test",
            "url" : "test1",
            "secret" : "secret",
            "active" : true
        }, 
        {
            "name" : "test2",
            "url" : "test12",
            "secret" : "secret2",
            "active" : false
        }
    ]
}
...