AutoWired getProperty возвращает ноль

У меня есть 2 класса, в которых я получаю getProperty класса autowired как null

Я опубликую свои классы и объясню проблему ниже Я использовал автопроводку, но я получаю вывод как null

Соединение.java

@Component
public class Connection {

    private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Connection.class);
    Logger basiclogger = Logger.getLogger("Main");


    public CloseableHttpClient httpClient;

        public static String Server;
        public static String service;
        public static String User;
        public static String Password;


        @Autowired
        public Connection(@Value("${Server}") String Server, @Value("${service}") String service,
               @Value("${User}") String User,@Value("${Password}") String Password)
            {
            Connection.Server = Server;
            Connection.service = service;
            Connection.User = User;
            Connection.Password = Password;

        }

        public Connection(){


        }


    public CloseableHttpClient getHttpClient() {

            return httpClient;
        }



        public void setHttpClient(CloseableHttpClient httpClient) {
            this.httpClient = httpClient;
        }



        public CloseableHttpClient makeConnection() {



                AuthenticatedClientBuilder builder = AuthenticatedClientBuilder.create(serviceProvider)
                .addServer(Server).setUser(User)
                .setPassword(Password);         
                httpClient = builder.build();
                basiclogger.info("Connection is Established SuccessFully");

                 return httpClient;
            } 

    }

}

Весенний XML

<bean id = "conn" class = "com.java.Connection"
         scope = "prototype"/>

В главном

 @Autowired(required = true)
     Connection connection;

        new ClassPathXmlApplicationContext(new String[] {"Spring-batch-context.xml"});

                Connection connection = (Connection)context.getBean("conn");
                connection.getHttpClient();
                System.out.println("***********"+connection.getHttpClient()+"***********");

Но я получаю connection.getHttpClient() как null

Может кто-нибудь, пожалуйста, помогите мне

Заранее спасибо!!!!!!!!

Если этот вызов определен в xml «CloseableHttpClient», он не инициализируется и не подключается автоматически с использованием xml, поэтому вы получаете нуль. Передайте свойство объекта CloseableHttpClient компоненту Connection в xml. См. это

mallikarjun 05.03.2019 07:34

<bean id = "conn" class = "com.java.Connection" scope = "prototype"> <property name = "CloseableHttpClient"/> </bean> Нравится??

munch2 05.03.2019 07:46

Возможный дубликат Как - Spring IoC и HttpClient 4.3.1 CloseableHttpClient?

mallikarjun 05.03.2019 09:03

я получаю httpclient по умолчанию, но я хочу использовать makeconnection() в Connection.java

munch2 06.03.2019 13:44
1
4
83
1

Ответы 1

От :

Connection connection = (Connection)context.getBean("conn");

Удалите @Autowired в Connection в основном методе и измените на:

@Autowired
BeanFactory beanFactory;

Connection connection = beanFactory.getBean(Connection.class, "args");

@Scope(value = "prototype") означает, что Spring не будет создавать экземпляр bean-компонента сразу при запуске, а сделает это позже по запросу.

Обновлять:

Вот Javadoc beanFactory.getBean()

getBean(java.lang.Class<T> requiredType, java.lang.Object... args) throws BeansException Return an instance, which may be shared or independent, of the specified bean.

Allows for specifying explicit constructor arguments / factory method arguments, overriding the specified default arguments (if any) in the bean definition.

This method goes into ListableBeanFactory by-type lookup territory but may also be translated into a conventional by-name lookup based on the name of the given type. For more extensive retrieval operations across sets of beans, use ListableBeanFactory and/or BeanFactoryUtils.

Parameters:

requiredType - type the bean must match; can be an interface or superclass

args - arguments to use when creating a bean instance using explicit arguments


Returns: an instance of the bean

Throws:

NoSuchBeanDefinitionException - if there is no such bean definition

BeanDefinitionStoreException - if arguments have been given but the affected bean isn't a prototype

BeansException - if the bean could not be created


Далее читаем здесь: БинФабрика

Все еще получаю ноль

munch2 05.03.2019 07:22

какая у вас весенняя версия?

Van_Cleff 05.03.2019 07:23

4.2.4 Весенняя версия

munch2 05.03.2019 07:24

Извините, я пропустил это, вы использовали @Scope(value = "prototype"), что означает, что Spring не будет создавать экземпляр bean-компонента сразу при запуске, а сделает это позже по требованию.

Van_Cleff 05.03.2019 07:35

я должен использовать @Scope или не должен?

munch2 05.03.2019 07:45

Это зависит от вашего требования. область применения: прототип означает, что одно определение компонента имеет любое количество экземпляров объекта. Поскольку вы передаете значения из файла свойств, и кажется, что они не изменятся в жизненном цикле программы, поэтому вы можете удалить его или использовать область применения: синглтон, что означает определение компонента для одного экземпляра для каждого контейнера Spring IoC (по умолчанию).

Van_Cleff 05.03.2019 07:55

ты масштаб поменял?

Van_Cleff 05.03.2019 08:21

Что такое исходная система в вашем ответе @vancleff

munch2 06.03.2019 13:46

Другие вопросы по теме