В Java начальная зависимость Azure applicationinsights несовместима с весенней загрузкой 3.x.x

Я хотел интегрировать информацию о приложении в свое приложение для загрузки Spring** (v3.x.x)**, и для этого я использовал приведенную ниже зависимость в моем build.gradle.

implementation 'com.microsoft.azure:applicationinsights-spring-boot-starter:2.6.4'

В моем контроллере я внедрил bean-компонент TelemetryClient, например:

@RestController
@RequestMapping("/")
public class UserController {
    @Autowired
    TelemetryClient telemetryClient;

    @GetMapping("/greetings")
    public String greetings() {
        // send event
        telemetryClient.trackEvent("URI /greeting is triggered");

        return "Hello World!";
    }
}

И, чтобы подключиться к аналитике приложений Azure, я использовал:

APPLICATIONINSIGHTS_CONNECTION_STRING=somevalue

в качестве переменной среды при запуске приложения в IntellijIdea.

Теперь приложение запускается и жалуется на:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field telemetryClient in com.example.demo.app.insights.UserController required a bean of type 'com.microsoft.applicationinsights.TelemetryClient' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.microsoft.applicationinsights.TelemetryClient' in your configuration.

Но как только я понизил версию весенней загрузки с 3.x.x до 2.7.11, она отлично работает с тем же фрагментом кода и запускает приложение.

Кто-нибудь еще сталкивался с подобной проблемой appinsights с весенней загрузкой на 3.xx? или есть идеи по исправлению в последней весенней загрузочной версии?

Здравствуйте, зависимость была старым способом использования информации о приложении; вместо этого я предлагаю вам использовать агент learn.microsoft.com/en-us/azure/azure-monitor/app/…

Paizo 25.04.2023 09:19
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
211
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я пробовал с той же зависимостью с версией spring boot 3.xx и получил ту же ошибку:

Результат:

Я получил ту же ошибку, что и вы упомянули выше:

  • Проведя исследование с моей стороны, я обнаружил, что пока нет совместимой версии Azure Application Insights с весенней загрузкой 3.x.x. Последняя совместимая версия — 2.7.x.
  • Последняя версия Azure Application Insights — 3.0.0-beta.1, и она совместима только с версией spring boot 2.x.x.
  • Следовательно, лучше использовать 2.x.x версии, а не 3.x.x.

Использованная литература:

Обратитесь к проблеме github, касающейся выпуска библиотеки Application Insights SpringBoot Starter.

Ответ принят как подходящий

Эта проблема была решена в https://github.com/microsoft/ApplicationInsights-Java/issues/3016

Ниже зависимость совместима с Spring Boot 3.x:

api('com.microsoft.azure:applicationinsights-core:3.4.11');
// api 'com.microsoft.azure:applicationinsights-spring-boot-starter:2.6.4' // not compatible with spring 3.x

После этого TelemetryClient Bean может быть введен следующим образом:

@RestController
@RequestMapping("/")
public class UserController {

    private final TelemetryClient telemetryClient = new TelemetryClient();

    @GetMapping("/greetings")
    public String greetings() {
        // send event
        telemetryClient.trackEvent("URI /greeting is triggered");

        return "Hello World!";
    }
}

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

H2 не может получить Instant при использовании собственного запроса [Spring Boot 3]
Как я могу заставить пользовательский интерфейс Swagger запрашивать у меня заголовок авторизации вместо моей сущности пользователя?
SpringBoot 3 JDK 17 — несоответствие ClassLoader для [java.io.FileWriter]
Сбой сборки Spring Native с GCP
Запрос GraphQL с вводом ненулевого типа объекта возвращает внутреннюю ошибку, поскольку он превратился в нуль при проверке в коде
Не удается подключиться к брокеру Kafka с помощью Spring Boot
Обертка REST API в методы CRUD базы данных Spring, чтобы его можно было использовать в качестве @Repository
Атрибут 'url' не указан, и встроенный источник данных не может быть настроен. Не удалось определить подходящий класс водителя
Сборка приложения Spring Boot развернута/собирается успешно, но происходит сбой из-за отсутствия основного атрибута манифеста в .jar (Maven)
Как пометить и отправить образ Docker, созданный с помощью spring-boot:build-image, в действии github?