Spring Загрузочный привод без Spring Загрузка
Я работал над приложением Spring/Spring MVC, и я хочу добавить показатели производительности. Я столкнулся с Spring Boot Actuator, и это похоже на отличное решение. Однако мое приложение не является приложением загрузки Spring. Мое приложение работает в традиционном контейнере Tomcat 8.
Я добавил следующие зависимости
// Spring Actuator
compile "org.springframework.boot:spring-boot-starter-actuator:1.2.3.RELEASE"
Я создал следующий класс конфигурации.
@EnableConfigurationProperties
@Configuration
@EnableAutoConfiguration
@Profile(value = {"dev", "test"})
@Import(EndpointAutoConfiguration.class)
public class SpringActuatorConfig {
}
Я даже дошел до добавления @EnableConfigurationProperties в каждом классе конфигурации, как это было предложено в другом посте в StackOverflow. Однако это ничего не делало. Конечные точки все еще не создаются и возвращают 404s.
Ответы
Ответ 1
Вы можете использовать привод без загрузки spring.
Добавьте это в pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
И затем в вашем классе конфигурации
@Configuration
@EnableWebMvc
@Import({
EndpointAutoConfiguration.class , PublicMetricsAutoConfiguration.class , HealthIndicatorAutoConfiguration.class
})
public class MyActuatorConfig {
@Bean
@Autowired
public EndpointHandlerMapping endpointHandlerMapping(Collection<? extends MvcEndpoint> endpoints) {
return new EndpointHandlerMapping(endpoints);
}
@Bean
@Autowired
public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) {
return new EndpointMvcAdapter(delegate);
}
}
И затем вы можете увидеть показатели в своем приложении
http://localhost:8085/metrics
![Конечная точка Actutaor]()
Ответ 2
Сначала давайте поясним, что вы не можете использовать Spring Boot Actuator без использования Spring Boot.
Я ошибался в том, что не могу без него Spring Boot. См. @Stefaan-neyts
ответьте на пример того, как это сделать.
Я создал образец проекта, чтобы показать, как можно преобразовать базовое приложение SpringMVC с минимальным количеством Spring автоматической настройки загрузки.
Исходный источник: http://www.mkyong.com/spring-mvc/gradle-spring-mvc-web-project-example
Преобразованный источник: https://github.com/Pytry/minimal-boot-actuator
Я мог бы полностью удалить файл dispatcher-servlet.xml и файлы web.xml, но я заставил их показать, как выполнить максимально возможное изменение и упростить преобразование более сложных проектов.
Вот список шагов, которые я сделал для преобразования.
Процесс преобразования
- Добавить файл конфигурации Java, аннотированный с помощью @SpringBootApplication
- Добавьте конфигурационный файл приложения как bean в традиционную xml-конфигурацию (добавьте его сразу после сканирования контекста).
-
Переместить разрешающие представления в конфигурацию Java-приложения.
В качестве альтернативы добавьте префикс и суффикс к application.properties.
Затем вы можете вставить их с помощью приложения @Value в свое приложение или полностью удалить его и просто использовать предоставленный Spring обработчик вида просмотра загрузки.
Я пошел с первым.
-
Удален прослушиватель контекста по умолчанию из контекстного xml Spring.
Это важно!
Поскольку Spring boot предоставит один, вы получите исключение "Исправление ошибки", если вы этого не сделаете.
-
Добавьте загрузочный плагин Spring к вашим зависимостям сборки script (я использовал gradle)
-
Добавить свойство mainClassName в файл сборки и установить пустую строку (указывает, что не создавать исполняемый файл).
-
Изменение зависимостей для исполнительного механизма Spring
Ответ 3
Несмотря на то, что использовать Spring функции загрузки без Spring Boot, это возможно!
Например, эта конфигурация Java делает Spring Метрики при загрузке с помощью Spring Boot:
import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.PublicMetricsAutoConfiguration;
import org.springframework.boot.actuate.endpoint.MetricsEndpoint;
import org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping;
import org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter;
import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import({ EndpointAutoConfiguration.class, PublicMetricsAutoConfiguration.class })
public class SpringBootActuatorConfig {
@Bean
@Autowired
public EndpointHandlerMapping endpointHandlerMapping(Collection<? extends MvcEndpoint> endpoints) {
return new EndpointHandlerMapping(endpoints);
}
@Bean
@Autowired
public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) {
return new EndpointMvcAdapter(delegate);
}
}
Зависимость Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
Ответ 4
Хотя ответ уже принят, я подумал о том, чтобы обновить свой опыт. Я не хотел конвертировать мое приложение в spring с помощью @SpringBootApplication
. Обратитесь к другому вопросу, где я упомянул минимальный требуемый код.
Ответ 5
Вам нужно будет преобразовать ваше приложение в Spring Boot, если вы хотите использовать компоненты, подключенные к нему. Существует раздел "Преобразовать существующее приложение в Spring Загрузка под Spring Документация по загрузке, которые вы хотите просмотреть. Я не делал этого сам, но я использую Spring Boot, и его относительно просто настроить так, надеюсь, вы можете получить его отсюда.
Ответ 6
вы допустили ошибку, не введя аннотацию @springboot в свой код. Когда вы добавите @springboot ot автоматически рассмотрите программу загрузки компилятором и добавьте требуемый файл зависимостей для него и файл зависимостей вашего привода