Почему ошибка инициализирующего компонента при инициализации Springboot - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь настроить фабрику соединений rabbitmq в своем классе. Хотите прочитать свойство, определенное в файле application.properties, используя аннотацию @Value. Тем не менее, конфигурация bean-компонента неверна. Я не могу этого понять. Вот код:

@Controller
@Configuration
@RequestMapping("/unittestdata")
@Component
@PropertySource("classpath:application.properties")
public class UnitAmqpRestController {


    @Value("${spring.rabbitmq.port}")
    public static int mqPort;

    public UnitAmqpRestController() {

    }
    private static final Logger logger = LoggerFactory.getLogger(UnitAmqpRestController.class);

    private static RabbitTemplate rabbitTemplate;
    private String replyQueueName;

    private static Connection connection;
    private static Channel channel;
    private String requestQueueName = "rpc_queue_unit";

    public UnitAmqpRestController(RabbitTemplate rabbitTemplate, String replyQueueName, Connection connection, Channel channel, String requestQueueName) {

        this.rabbitTemplate = rabbitTemplate;
        this.replyQueueName = replyQueueName;
        this.connection = connection;
        this.channel = channel;
        this.replyQueueName = requestQueueName;

    }

    @PostConstruct  
    public static void main() throws Exception {

        rabbitTemplate.setReplyTimeout(15_000L);
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost(getHostProperty());

        factory.setPort(mqPort);
        connection = factory.newConnection();
        channel = connection.createChannel();

    }


    public static String getHostProperty() {
        Properties properties = new Properties();
        try {
            File file = ResourceUtils.getFile("classpath:application.properties");
            InputStream in = new FileInputStream(file);
            properties.load(in);
        } catch (IOException e) {

        }
        return properties.getProperty("spring.rabbitmq.host");

    }

вот ошибка:

2019-06-18 10: 58: 02.642 ИНФОРМАЦИЯ 29037 --- [главная] o.apache.catalina.core.StandardService: Остановка службы [Tomcat] 2019-06-18 10: 58: 02.661 ИНФОРМАЦИЯ 29037 --- [главная] utoConfigurationReportLoggingInitializer:

Ошибка запуска ApplicationContext. Для отображения автоконфигурации отчет перезапустите ваше приложение с включенной отладкой. 2019-06-18 10: 58: 02.667 ОШИБКА 29037 --- [главная] o.s.boot.SpringApplication: сбой запуска приложения

org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем 'unitAmqpRestController': вызов init метод не удался; вложенным исключением является java.lang.NullPointerException в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization (InitDestroyAnnotationBeanPostProcessor.java:137) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization (AbstractAutowireCapableBeanFactory.java:409) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1620) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:306) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:761) ~ [! весна-бобы-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:867) ~ [Весна-контекст-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:543) ~ [Весна-контекст-4.3.14.RELEASE.jar /: 4.3.14.RELEASE] в org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh (EmbeddedWebApplicationContext.java:122) ~ [Весна-загрузки 1.5.10.RELEASE.jar /: 1.5.10.RELEASE] в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:693) [Весна-загрузки 1.5.10.RELEASE.jar /: 1.5.10.RELEASE] в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:360) [Весна-загрузки 1.5.10.RELEASE.jar /: 1.5.10.RELEASE]в org.springframework.boot.SpringApplication.run (SpringApplication.java:303) [spring-boot-1.5.10.RELEASE.jar! /: 1.5.10.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java: 1118) [spring-boot-1.5.10.RELEASE.jar! /: 1.5.10.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:1107) [spring-boot-1.5.10.RELEASE.jar! /: 1.5.10.RELEASE] в com.infy.ci.unitamqpservice.UnitamqpserviceApplication.main (UnitamqpserviceApplication.java:10) [классы! /: 0.0.1-SNAPSHOT] в sun.reflect.NativeMethodAccessormpl.invoke0 (Собственный метод) ~ [na: 1.8.0_212] в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) ~ [na: 1.8.0_212] в sun.reflect.DelegatingMethodAccessorImpl.etj.jpg43) ~ [na: 1.8.0_212] в java.lang.reflect.Method.invoke (Method.java:498) ~ [na: 1.8.0_212] в org.springframework.boot.loader.MainMethodRunner.run (MainMethodRunner.java: 48) [unitamqpservice-0.0.1-SNAPSHOT.jar: 0.0.1-SNAPSHOT] в илиg.springframework.boot.loader.Launcher.launch (Launcher.java:87) [unitamqpservice-0.0.1-SNAPSHOT.jar: 0.0.1-SNAPSHOT] в org.springframework.boot.loader.Launcher.launch (Launcher.Java: 50) [unitamqpservice-0.0.1-SNAPSHOT.jar: 0.0.1-SNAPSHOT] в org.springframework.boot.loader.JarLauncher.main (JarLauncher.java:51) [unitamqpservice-0.0.1-SNAPSHOT.jar: 0.0.1-SNAPSHOT] Вызвано: java.lang.NullPointerException: null at com.infy.ci.unitamqpservice.UnitAmqpRestController.main (UnitAmqpRestController.java:69) ~ [классы! /: 0.0.1-SNAPSHOT] в ВС.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_212] в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) ~ [na: 1.8.0_212] в sun.rempell.DelegatingMethodAccessorImpl.java:43) ~ [na: 1.8.0_212] в java.lang.reflect.Method.invoke (Method.java:498) ~ [na: 1.8.0_212] в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor $ LifecycleElement.invoke (InitDestroyAnnotationBeanPostProcessor.java:366) ~ [spring-beans-4.3.14.RELEASE.jar! /: 4.3.14.RELEASE] по адресу org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor $ LifecycleMetadata.ostjnoeOntProcess.NoIgnOnEgnOnt () ~ [spring-beans-4.3.14.RELEASE.jar! /: 4.3.14.RELEASE] в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization (InitDestroyAnnotationBeanPostProcessorjj) [springProcessor.jar]4.3.14.RELEASE.jar! /: 4.3.14.RELEASE] ... пропущено 26 общих фреймов

Не получается, есть ли проблема в конструкторе ИЛИ в методе main ??Я пропускаю что-то вроде конфигурации @Bean ??

Пожалуйста, предложите

1 Ответ

0 голосов
/ 19 июня 2019

Спасибо M.Deinum за его комментарий и пост.я передал подробный документ по

spring-boot-starter-amqp

https://spring.io/guides/gs/messaging-rabbitmq/

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-messaging.html#boot-features-amqp

В нем четко говорится о том, как не нужно самостоятельно обрабатывать фабрику соединений rabbitmq.имея стандартные ключевые параметры, определенные в файле application.properties, AmQPTemplate делает все.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...