Maven建议将com.microsoft.azure:applicationinsights-web更新到3.4.9版本,之前我使用的是2.6.2。更新后我收到错误:
java: com.microsoft.applicationinsights.TelemetryConfiguration is not public in com.microsoft.applicationinsights; cannot be accessed from outside package
和
java: cannot find symbol symbol: class WebRequestTrackingFilter location: package com.microsoft.applicationinsights.web.internal
如果我更新到最新的 2.x 应用程序洞察版本,一切正常。但 3.x 版本不行。我正在使用 Spring boot 2.7.13。 您能告诉我应该采取什么步骤来解决这个问题吗?
我使用的代码类似于下面的代码(无法让 AppInsights 在 Spring Boot 下工作)
@Configuration
public class AppInsightsConfig {
@Bean
public String telemetryConfig() {
String telemetryKey = System.getenv("APPLICATION_INSIGHTS_IKEY");
if (telemetryKey != null) {
TelemetryConfiguration.getActive().setInstrumentationKey(telemetryKey);
}
return telemetryKey;
}
@Bean
public FilterRegistrationBean aiFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new WebRequestTrackingFilter());
registration.addUrlPatterns("/**");
registration.setOrder(1);
return registration;
}
@Bean(name = "WebRequestTrackingFilter")
public Filter WebRequestTrackingFilter() {
return new WebRequestTrackingFilter();
}
}
发生这种情况是由于依赖项的版本与 spring boot 之间不兼容。
applicationinsights-web
3.4.9 版与 Spring Boot 2.7.13
不兼容。applicationinsights-web
2.x.x 版本与 spring-boot
2.x.x.检查以下步骤是否有助于解决您的问题:
如果您是升级applicationsightsweb版,需要升级springboot版本才能兼容升级后的applicationinsights-web版本。
此外,将
application-insights-core
软件包升级到最新版本,以与您的 application-insights-web
版本兼容。
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>3.4.15</version>
</dependency>
com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter
和 com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter
类。package com.example.demo;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import com.microsoft.applicationinsights.TelemetryConfiguration;
import com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter;
applicationinsights-runtime-attach
dependency 来配置 Application Insights。<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-runtime-attach</artifactId>
<version>3.4.15</version>
</dependency>
参考资料:
从 2.x 升级 - Azure Monitor Application Insights Java - Azure Monitor