生産情報エンドポイントを備えたSpring Bootのアクチュエータライブラリは、あらゆるサーバーアプリケーションに非常に役立ちます。しかし問題は、従来のSpringアプリケーション(Spring BOOTアプリケーションではない)に統合する方法が見つからなかったことです。
アクチュエータのエンドポイントを使用する方法がいくつかあるに違いありませんが、それらを接続することができませんでした。
以下のようなJavaConfigクラスがあります
@Configuration
@ComponentScan(basePackages = { "com.company.helper", "org.springframework.boot" })
@EnableWebMvc
@Import({ DbConfig.class })
public class AppConfig extends WebMvcConfigurerAdapter {
}
ただし、この構成ではデプロイメント中にエラーがスローされます。
この配線は、Spring Bootアプリケーションなしで実行できますか?
このブログ投稿で、非ブートアプリケーションにスプリングブートアクチュエータを追加する方法に関する情報を追加しました
http://givenwhenthen.blogspot.com/2015/09/adding-spring-boot-actuator-to-non.html
アプリケーションのbuild.gradleに、次の依存関係を追加しました
compile('org.springframework.boot:spring-boot-actuator:1.2.5.RELEASE'){
exclude group: 'org.springframework.boot', module:'spring-boot-starter-logging'}
アプリケーションのSpring Configクラスに、次のものを追加しました。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration;
import org.springframework.boot.actuate.endpoint.BeansEndpoint;
import org.springframework.boot.actuate.endpoint.HealthEndpoint;
import org.springframework.boot.actuate.endpoint.InfoEndpoint;
import org.springframework.boot.actuate.endpoint.RequestMappingEndpoint;
import org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping;
import org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter;
import org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint;
import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;
@Configuration
@Import(EndpointAutoConfiguration.class)
public class MyAppSpringConfig {
@Bean
@Autowired
//Define the HandlerMapping similar to RequestHandlerMapping to expose the endpoint
public EndpointHandlerMapping endpointHandlerMapping(
Collection<? extends MvcEndpoint> endpoints
){
return new EndpointHandlerMapping(endpoints);
}
@Bean
@Autowired
//define the HealthPoint endpoint
public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate){
return new HealthMvcEndpoint(delegate, false);
}
@Bean
@Autowired
//define the Info endpoint
public EndpointMvcAdapter infoMvcEndPoint(InfoEndpoint delegate){
return new EndpointMvcAdapter(delegate);
}
@Bean
@Autowired
//define the beans endpoint
public EndpointMvcAdapter beansEndPoint(BeansEndpoint delegate){
return new EndpointMvcAdapter(delegate);
}
@Bean
@Autowired
//define the mappings endpoint
public EndpointMvcAdapter requestMappingEndPoint(
RequestMappingEndpoint delegate
){
return new EndpointMvcAdapter(delegate);
}
}
追加の依存関係を1つ取り除きたい場合は、ブログ投稿を参照してください。
更新
また、RequestMappingHandlerAdapterにBeanが定義されていることを確認する必要があります。Beanがない場合、ServletDispatcherはHealthMvcEndpointのハンドラーのアダプターをフェッチできません。
持っていない場合は、Bean構成ファイルに追加するだけです。
xml構成:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter"/>
</list>
</property>
</bean>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
<property name="prettyPrint" value="true" />
</bean>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加