Подтвердить что ты не робот

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.

4b9b3361

Ответ 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 автоматически рассмотрите программу загрузки компилятором и добавьте требуемый файл зависимостей для него и файл зависимостей вашего привода