본문 바로가기

IT/SpringBoot

스프링 부트 #4.15-25. REST서비스 호출 외

반응형
더보기

4.15. REST 서비스 호출

응용 프로그램에서 원격 REST 서비스를 호출해야 하는 경우 스프링 프레임워크의 RestTemplate 클래스를 사용할 수 있습니다. 인스턴스를 사용 하기 전에 사용자 지정 해야 하는 경우가 많기 때문에 스프링 부트은 단일 자동 구성 콩을 제공하지 않습니다. 그러나 필요할 때 인스턴스를 만드는 데 사용할 수 있는 을 자동으로 구성합니다. 자동 구성은 인스턴스에 합리적인 것이 적용되도록 합니다.RestTemplateRestTemplateRestTemplateBuilderRestTemplateRestTemplateBuilderHttpMessageConvertersRestTemplate

 

다음 코드에는 일반적인 예제가 표시됩니다.

@Service
public class MyService {

    private final RestTemplate restTemplate;

    public MyService(RestTemplateBuilder restTemplateBuilder) {
        this.restTemplate = restTemplateBuilder.build();
    }

    public Details someRestCall(String name) {
        return this.restTemplate.getForObject("/{name}/details", Details.class, name);
    }

}
  RestTemplateBuilder 빠르게 구성하는 데 사용할 수 있는 여러 가지 유용한 메서드가 포함됩니다. 예를 들어 BASIC auth 지원을 추가하려면 . RestTemplatebuilder.basicAuthentication("user", "password").build()

4.15.1. 레스트템플릿 사용자 지정

사용자 지정을 얼마나 광범위하게 적용하려는지에 따라 사용자 지정에 대한 세 가지 주요 방법이 있습니다.RestTemplate

사용자 지정 범위를 가능한 한 좁게 만들려면 자동 구성된 것을 삽입한 다음 필요에 따라 메서드를 호출합니다. 각 메서드 호출은 새 인스턴스를 반환하므로 사용자 지정은 이 빌더 사용에만 영향을 미칩니다.RestTemplateBuilderRestTemplateBuilder

응용 프로그램 전체의 첨가제 사용자 정의를 만들려면 콩을 사용합니다. 이러한 모든 콩은 자동으로 자동 구성된 것으로 등록되며 그것으로 빌드된 모든 템플릿에 적용됩니다.RestTemplateCustomizerRestTemplateBuilder

다음 예제에서는 다음을 제외한 모든 호스트에 대한 프록시 사용을 구성하는 사용자 지정자를 보여 주습니다.192.168.0.5

static class ProxyCustomizer implements RestTemplateCustomizer {

    @Override
    public void customize(RestTemplate restTemplate) {
        HttpHost proxy = new HttpHost("proxy.example.com");
        HttpClient httpClient = HttpClientBuilder.create().setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {

            @Override
            public HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context)
                    throws HttpException {
                if (target.getHostName().equals("192.168.0.5")) {
                    return null;
                }
                return super.determineProxy(target, request, context);
            }

        }).build();
        restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
    }

}

마지막으로, 가장 극단적 인 (그리고 거의 사용되지 않는) 옵션은 자신의 콩을 만드는 것입니다. 이렇게 하면 자동 구성이 꺼지고 콩이 사용되지 않습니다.RestTemplateBuilderRestTemplateBuilderRestTemplateCustomizer

4.16. 웹클라이언트로 REST 서비스 호출

클래스경로에 스프링 웹플럭스가 있는 경우 원격 REST 서비스로 전화를 걸 수도 있습니다. 이 클라이언트는 보다 기능적인 느낌을 가지며 완전히 반응적입니다. 스프링 프레임워크 문서에서 전용 섹션에서 자세히 알아볼 수 있습니다.WebClientRestTemplateWebClient

스프링 부트은 당신을 위해 생성하고 사전 구성; 구성 요소에 주입하고 인스턴스를 만드는 데 사용하는 것이 좋습니다. 스프링 부트은 HTTP 리소스를 공유하고, 서버 와 동일한 방식으로 코덱 설정을 반영하도록 구성하고 있습니다(WebFlux HTTP 코덱 자동 구성참조) 등.WebClient.BuilderWebClient

다음 코드에는 일반적인 예제가 표시됩니다.

@Service
public class MyService {

    private final WebClient webClient;

    public MyService(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder.baseUrl("https://example.org").build();
    }

    public Mono<Details> someRestCall(String name) {
        return this.webClient.get().uri("/{name}/details", name)
                        .retrieve().bodyToMono(Details.class);
    }

}

4.16.1. 웹 클라이언트 런타임

스프링 부트은 응용 프로그램 클래스 경로에서 사용할 수 있는 라이브러리에 따라 운전할 데 사용할 것을 자동으로 감지합니다. 현재 원자로 쐐기풀및 부두 RS 클라이언트가 지원됩니다.ClientHttpConnectorWebClient

스타터는 기본적으로 서버와 클라이언트 구현을 모두 제공합니다. 대신 Jetty를 사후 대응 서버로 사용하도록 선택한 경우 Jetty 반응성 HTTP 클라이언트 라이브러리에 종속성을 추가해야 합니다. 서버와 클라이언트에 동일한 기술을 사용하면 클라이언트와 서버 간에 HTTP 리소스를 자동으로 공유하므로 이점이 있습니다.spring-boot-starter-webfluxio.projectreactor.netty:reactor-nettyorg.eclipse.jetty:jetty-reactive-httpclient

개발자는 사용자 지정 또는 빈을 제공하여 부두 및 Reactor Netty의 리소스 구성을 재정의할 수 있습니다.ReactorResourceFactoryJettyResourceFactory

클라이언트에 대한 해당 선택을 재정의하려면 자신의 콩을 정의하고 클라이언트 구성을 완전히 제어할 수 있습니다.ClientHttpConnector

Spring Framework 참조 문서에서 WebClient 구성 옵션에대해 자세히 알아볼 수 있습니다.

4.16.2. 웹클라이언트 사용자 지정

사용자 지정을 얼마나 광범위하게 적용하려는지에 따라 사용자 지정에 대한 세 가지 주요 방법이 있습니다.WebClient

사용자 지정 범위를 가능한 한 좁게 만들려면 자동 구성된 것을 삽입한 다음 필요에 따라 메서드를 호출합니다. 인스턴스는 상태 절전: 빌더에 대한 모든 변경 사항은 이후에 생성된 모든 클라이언트에 반영됩니다. 동일한 빌더로 여러 클라이언트를 만들려면 빌더를 복제하는 것도 고려할 수 있습니다.WebClient.BuilderWebClient.BuilderWebClient.Builder other = builder.clone();

모든 인스턴스에 응용 프로그램 전체의 첨가제 사용자 지정을 만들려면 콩을 신고하고 주입 시점에 로컬로 변경할 수 있습니다.WebClient.BuilderWebClientCustomizerWebClient.Builder

마지막으로 원래 API로 돌아가서 사용할 수 있습니다. 이 경우 자동 구성이 없거나 적용되지 않습니다.WebClient.create()WebClientCustomizer

4.17. 유효성 검사

Bean 유효성 검사 1.1에서 지원하는 메서드 유효성 검사 기능은 JSR-303 구현(예: 최대 절전 모드 유효성 검사기)이 클래스경로에 있는 한 자동으로 활성화됩니다. 이렇게 하면 bean 메서드에 매개 변수 및/또는 반환 값에 대한 제약 조건에 대해 추가할 수 있습니다. 이러한 주석이 달린 메서드가 있는 대상 클래스는 인라인 제약 조건 주석을 검색할 메서드에 대한 형식 수준에서 주석에 주석을 지정해야 합니다.javax.validation@Validated

예를 들어 다음 서비스는 첫 번째 인수의 유효성 검사를 트리거하여 크기가 8에서 10 사이인지 확인합니다.

@Service
@Validated
public class MyBean {

    public Archive findByCodeAndAuthor(@Size(min = 8, max = 10) String code,
            Author author) {
        ...
    }

}

4.18. 이메일 보내기

스프링 프레임워크는 인터페이스를 사용하여 전자 메일을 전송하기 위한 쉬운 추상화를 제공하며 스프링 부트은 이를 위한 자동 구성과 스타터 모듈을 제공합니다.JavaMailSender

  사용 방법에 대한 자세한 설명은 참조 설명서를 참조하십시오. JavaMailSender

관련 라이브러리(정의된 대로)를 사용할 수 있는 경우 존재하지 않는 경우 기본값이 만들어집니다. 보낸 사람은 네임스페이스의 구성 항목에 의해 더 사용자 정의할 수 있습니다. 자세한 내용은 MailProperties를 참조하십시오.spring.mail.hostspring-boot-starter-mailJavaMailSenderspring.mail

특히 특정 기본 시간 설정 값은 무한하며 다음 예제와 같이 응답하지 않는 메일 서버에 의해 스레드가 차단되지 않도록 변경할 수 있습니다.

spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000

JNDI의 기존 항목으로 구성할 수도 있습니다.JavaMailSenderSession

spring.mail.jndi-name=mail/Session

a가 설정되면 다른 모든 세션 관련 설정보다 우선합니다.jndi-name

4.19. JTA와의 분산 거래

Spring Boot는 Atomikos 임베디드 트랜잭션 관리자를 사용하여 여러 XA 리소스에 분산 된 JTA 트랜잭션을 지원합니다. Bitronix 임베디드 트랜잭션 관리자 를 사용하는 데 대한 사용되지 않습니다도 제공되지만 향후 릴리스에서 제거됩니다. 적합한 Java EE 응용 프로그램 서버에 배포할 때도 JTA 트랜잭션이 지원됩니다.

JTA 환경이 감지되면 Spring's가 트랜잭션을 관리하는 데 사용됩니다. XA 트랜잭션을 지원하기 위해 자동 구성된 JMS, DataSource 및 JPA 빈이 업그레이드됩니다. 표준 스프링 숙어(예: 분산 트랜잭션)에 참여할 수 있습니다. JTA 환경 내에 있고 로컬 트랜잭션을 계속 사용하려는 경우 속성을 설정하여 JTA 자동 구성을 비활성화할 수 있습니다.JtaTransactionManager@Transactionalspring.jta.enabledfalse

4.19.1. 아토미코스 거래 관리자 사용

Atomikos는 스프링 부트 응용 프로그램에 포함 될 수있는 인기있는 오픈 소스 트랜잭션 관리자입니다. 스타터를 사용하여 적절한 아토미코스 라이브러리를 가져올 수 있습니다. Spring Boot는 아토미코스를 자동으로 구성하고 스프링 콩에 적절한 설정이 적용되어 올바른 시작 및 종료 순서를 확인합니다.spring-boot-starter-jta-atomikosdepends-on

기본적으로 Atomikos 트랜잭션 로그는 응용 프로그램의 홈 디렉터리(응용 프로그램 jar 파일이 있는 디렉터리)의 디렉터리에 기록됩니다. 파일에 속성을 설정하여 이 디렉터리 위치를 사용자 지정할 수 있습니다. 프로퍼티는 아토미코스를 사용자 지정하는 데 사용할 수도 있습니다. 자세한 내용은 아토미코스프로퍼티 자바독을 참조하십시오.transaction-logsspring.jta.log-dirapplication.propertiesspring.jta.atomikos.propertiesUserTransactionServiceImp

  여러 트랜잭션 관리자가 동일한 리소스 관리자를 안전하게 조정할 수 있도록 하려면 각 Atomikos 인스턴스를 고유 ID로 구성해야 합니다. 기본적으로 이 ID는 아토미코스가 실행되는 컴퓨터의 IP 주소입니다. 프로덕션의 고유성을 보장하려면 응용 프로그램의 각 인스턴스에 대해 다른 값으로 속성을 구성해야 합니다. spring.jta.transaction-manager-id

4.19.2. Bitronix 트랜잭션 관리자 사용

  스프링 부트 2.3현재 Bitronix에 대한 지원이 사용되지 않았으며 향후 릴리스에서 제거됩니다.

시작 번을 사용하여 프로젝트에 적절한 Bitronix 종속성을 추가할 수 있습니다. 아토미코스와 마찬가지로 스프링 부트은 비트로닉스를 자동으로 구성하고 원두를 사후 처리하여 시작 및 종료 주문이 올바른지 확인합니다.spring-boot-starter-jta-bitronix

기본적으로 Bitronix 트랜잭션 로그 파일(및)은 응용 프로그램 홈 디렉터리의 디렉토리에 기록됩니다. 속성을 설정하여 이 디렉터리 위치를 사용자 지정할 수 있습니다. 시작 속성은 콩에 바인딩되어 있어 완벽한 사용자 지정이 허용됩니다. 자세한 내용은 Bitronix 문서를 참조하십시오.part1.btmpart2.btmtransaction-logsspring.jta.log-dirspring.jta.bitronix.propertiesbitronix.tm.Configuration

  여러 트랜잭션 관리자가 동일한 리소스 관리자를 안전하게 조정할 수 있도록 하려면 각 Bitronix 인스턴스를 고유 ID로 구성해야 합니다. 기본적으로 이 ID는 Bitronix가 실행 중인 컴퓨터의 IP 주소입니다. 프로덕션의 고유성을 보장하려면 응용 프로그램의 각 인스턴스에 대해 다른 값으로 속성을 구성해야 합니다. spring.jta.transaction-manager-id

4.19.3. Java EE 관리 트랜잭션 관리자 사용

Spring Boot 응용 프로그램을 또는 파일로 패키징하고 Java EE 응용 프로그램 서버에 배포하는 경우 응용 프로그램 서버의 기본 제공 트랜잭션 관리자를 사용할 수 있습니다. Spring Boot는 일반적인 JNDI 위치(등 등)를 보고 트랜잭션 관리자를 자동으로 구성하려고 시도합니다. 응용 프로그램 서버에서 제공하는 트랜잭션 서비스를 사용하는 경우 일반적으로 모든 리소스가 서버에서 관리하고 JNDI를 통해 노출되도록 하려는 것입니다. 스프링 부트은 JNDI 경로(또는)에서 JMS를 찾아 JMS를 자동으로 구성하려고 시도하며, spring.datasource.jndi 이름 속성을 사용하여 구성할 수 있습니다.warearjava:comp/UserTransactionjava:comp/TransactionManagerConnectionFactoryjava:/JmsXAjava:/XAConnectionFactoryDataSource

4.19.4. XA 및 비 XA JMS 연결 혼합

JTA를 사용하는 경우 기본 JMS 빈은 XA 인식이며 분산 트랜잭션에 참여합니다. 경우에 따라 XA가 아닌 경우 특정 JMS 메시지를 처리할 수 있습니다. 예를 들어 JMS 처리 논리는 XA 시간 초과보다 오래 걸릴 수 있습니다.ConnectionFactoryConnectionFactory

XA가 아닌 경우 콩보다는 콩을 주입할 수 있습니다. 일관성을 위해 콩은 콩 별칭을 사용하여 제공됩니다.ConnectionFactorynonXaJmsConnectionFactory@PrimaryjmsConnectionFactoryjmsConnectionFactoryxaJmsConnectionFactory

다음 예제에서는 인스턴스를 삽입하는 방법을 보여 주습니다.ConnectionFactory

// Inject the primary (XA aware) ConnectionFactory
@Autowired
private ConnectionFactory defaultConnectionFactory;

// Inject the XA aware ConnectionFactory (uses the alias and injects the same as above)
@Autowired
@Qualifier("xaJmsConnectionFactory")
private ConnectionFactory xaConnectionFactory;

// Inject the non-XA aware ConnectionFactory
@Autowired
@Qualifier("nonXaJmsConnectionFactory")
private ConnectionFactory nonXaConnectionFactory;

4.19.5. 대체 임베디드 트랜잭션 관리자 지원

XAConnectionFactoryWrapper XADataSourceWrapper 인터페이스는 대체 임베디드 트랜잭션 관리자를 지원하는 데 사용할 수 있습니다. 인터페이스는 포장 및 콩을 포장하고 일반 및 콩으로 노출하여 분산 트랜잭션에 투명하게 등록할 책임이 있습니다. 데이터소스 및 JMS 자동 구성은 JTA 변형을 사용하며, 빈과 적절한 XA 래퍼 빈이 등록되어 있는 경우.XAConnectionFactoryXADataSourceConnectionFactoryDataSourceJtaTransactionManagerApplicationContext

아토미코스XA커넥션팩토리랩퍼와 아토미코스XA데이터소스랩퍼는 XA 래퍼를 작성하는 방법에 대한 좋은 예를 제공합니다.

4.20. 헤이즐캐스트

Hazelcast가 클래스 경로에 있고 적절한 구성이 있는 경우 스프링 부트은 응용 프로그램에서 삽입할 수 있는 설정을 자동으로 구성합니다.HazelcastInstance

콩을 정의하면 스프링 부트을 사용합니다. 구성에서 인스턴스 이름을 정의하는 경우 Spring Boot는 새 인스턴스를 만드는 대신 기존 인스턴스를 찾으려고 합니다.com.hazelcast.config.Config

다음 예제와 같이 구성을 통해 사용할 헤이즐캐스트 구성 파일을 지정할 수도 있습니다.

spring.hazelcast.config=classpath:config/my-hazelcast.xml

그렇지 않으면 스프링 부트은 작업 디렉토리 또는 클래스 경로의 루트 또는 동일한 위치에 있는 위치에서 Hazelcast 구성을 찾으려고 시도합니다. 또한 시스템 속성이 설정되어 있는지 확인합니다. 자세한 내용은 헤이즐캐스트 문서를 참조하십시오.hazelcast.xml.yamlhazelcast.config

클래스 경로에 있는 경우 스프링 부트은 먼저 다음 구성 옵션을 확인하여 클라이언트를 만들려고 시도합니다.hazelcast-client

  • 콩의 존재.com.hazelcast.client.config.ClientConfig
  • 속성에 의해 정의된 구성 파일입니다.spring.hazelcast.config
  • 시스템 속성의 존재입니다.hazelcast.client.config
  • 작업 디렉토리 또는 클래스 경로의 루트에 있는 A입니다.hazelcast-client.xml
  • 작업 디렉토리 또는 클래스 경로의 루트에 있는 A입니다.hazelcast-client.yaml
  스프링 부트은 또한 헤이즐캐스트에 대한 명시적 캐싱 지원을제공합니다. 캐싱이 활성화되면 구현에 자동으로 래핑됩니다. HazelcastInstanceCacheManager

4.21. 쿼츠 스케줄러

스프링 부트는 "스타터"를 포함하여 석영 스케줄러와함께 작업할 수 있는 몇 가지 편의를 제공합니다. 석영을 사용할 수 있는 경우 추상화를 통해 자동으로 구성됩니다.spring-boot-starter-quartzSchedulerSchedulerFactoryBean

다음 유형의 콩은 자동으로 픽업되어 다음과 관련이 있습니다.Scheduler

  • JobDetail: 특정 작업을 정의합니다. 인스턴스는 API를 통해 빌드할 수 있습니다.JobDetailJobBuilder
  • Calendar.
  • Trigger: 특정 작업이 트리거되는 시기를 정의합니다.

기본적으로 인메모리가 사용됩니다. 그러나 응용 프로그램에서 bean을 사용할 수 있고 다음 예제와 같이 속성이 그에 따라 구성된 경우 JDBC 기반 저장소를 구성할 수 있습니다.JobStoreDataSourcespring.quartz.job-store-type

spring.quartz.job-store-type=jdbc

JDBC 저장소를 사용하는 경우 다음 예제와 같이 시작 시 스키마를 초기화할 수 있습니다.

spring.quartz.jdbc.initialize-schema=always
  기본적으로 데이터베이스는 석영 라이브러리와 함께 제공된 표준 스크립트를 사용하여 데이터베이스가 검색되고 초기화됩니다. 이러한 스크립트는 기존 테이블을 삭제하여 다시 시작할 때마다 모든 트리거를 삭제합니다. 속성을 설정하여 사용자 지정 스크립트를 제공할 수도 있습니다. spring.quartz.jdbc.schema

석영이 응용 프로그램의 메인 이외의 다른 것을 사용하도록 하려면 콩을 선언하고 메서드에 대해 음응합니다. 이렇게 하면 쿼츠 별이 스키마 초기화와 스키마 초기화에 사용됩니다.DataSourceDataSourceDataSource@Bean@QuartzDataSourceDataSourceSchedulerFactoryBean

기본적으로 구성으로 만든 작업은 영구 작업 저장소에서 읽은 이미 등록된 작업을 덮어쓰지 않습니다. 기존 작업 정의를 덮어쓰기를 사용하려면 속성이 설정됩니다.spring.quartz.overwrite-existing-jobs

석영 스케줄러 구성은 프로그래매틱 사용자 지정을 허용하는 속성 및 콩을 사용하여 사용자 정의 할 수 있습니다. 고급 석영 구성 속성을 사용하여 사용자 정의 할 수 있습니다.spring.quartzSchedulerFactoryBeanCustomizerSchedulerFactoryBeanspring.quartz.properties.*

  특히, 쿼츠가 스케줄러를 통해 구성할 수 있는 방법을 제공하므로 콩은 스케줄러와 연관되지 않는다. 작업 실행기를 사용자 지정해야 하는 경우 . Executorspring.quartz.propertiesSchedulerFactoryBeanCustomizer

작업은 데이터 맵 속성을 삽입하기 위해 세터를 정의할 수 있습니다. 일반 콩은 또한 다음과 같은 유사한 방식으로 주입 될 수있다:

public class SampleJob extends QuartzJobBean {

    private MyService myService;

    private String name;

    // Inject "MyService" bean
    public void setMyService(MyService myService) { ... }

    // Inject the "name" job data property
    public void setName(String name) { ... }

    @Override
    protected void executeInternal(JobExecutionContext context)
            throws JobExecutionException {
        ...
    }

}

4.22. 작업 실행 및 일정

컨텍스트에 콩이 없는 경우 스프링 부트은 비동기 작업 실행() 및 Spring MVC 비동기 요청 처리에 자동으로 연결할 수 있는 합리적인 기본값을 자동으로 구성합니다.ExecutorThreadPoolTaskExecutor@EnableAsync

 

컨텍스트에서 사용자 지정을 정의한 경우 일반 작업 실행(예:)은 투명하게 사용하지만 스프링 MVC 지원은 구현(이름)이 필요하므로 구성되지 않습니다. 대상 배열에 따라 사용자 지정을 변경하거나 사용자 지정 을 모두 정의할 수 있습니다.Executor@EnableAsyncAsyncTaskExecutorapplicationTaskExecutorExecutorThreadPoolTaskExecutorThreadPoolTaskExecutorAsyncConfigurerExecutor

자동 구성을 사용하면 기본적으로 자동 구성이 수행하는 작업을 재현하는 인스턴스를 쉽게 만들 수 있습니다.TaskExecutorBuilder

스레드 풀은 부하에 따라 성장하고 축소할 수 있는 8개의 코어 스레드를 사용합니다. 이러한 기본 설정은 다음 예제와 같이 네임스페이스를 사용하여 미세 조정할 수 있습니다.spring.task.execution

spring.task.execution.pool.max-size=16
spring.task.execution.pool.queue-capacity=100
spring.task.execution.pool.keep-alive=10s

이렇게 하면 스레드 풀이 바뀐 큐를 사용하여 큐가 가득 찼을 때(100개의 작업)가 스레드 풀을 최대 16스레드로 증가시킵니다. 10초 동안 유휴 상태일 때(기본적으로 60초가 아닌) 스레드가 회수될 때 풀 축소가 더 공격적입니다.

예약된 작업 실행()에 연결해야 하는 경우 A를 자동으로 구성할 수도 있습니다. 스레드 풀은 기본적으로 하나의 스레드를 사용하며 이러한 설정을 네임스페이스를 사용하여 미세 조정할 수 있습니다.ThreadPoolTaskScheduler@EnableSchedulingspring.task.scheduling

사용자 지정 실행기 또는 스케줄러를 만들어야 하는 경우 컨텍스트에서 콩과 콩을 모두 사용할 수 있습니다.TaskExecutorBuilderTaskSchedulerBuilder

4.23. 스프링 통합

스프링 부트는 "스타터"를 포함하여 스프링 통합작업을 위한 몇 가지 편의를 제공합니다. 스프링 통합은 메시징 및 HTTP, TCP 및 기타 전송에 대한 추상화를 제공합니다. 클래스 경로에서 스프링 통합을 사용할 수 있는 경우 어프런지를 통해 초기화됩니다.spring-boot-starter-integration@EnableIntegration

스프링 부트은 또한 추가 스프링 통합 모듈이 있는 경우 트리거되는 일부 기능을 구성합니다. 클래스 경로에도 있는 경우 메시지 처리 통계는 JMX를 통해 게시됩니다. 사용 가능한 경우 다음 줄과 같이 시작 시 기본 데이터베이스 스키마를 만들 수 있습니다.spring-integration-jmxspring-integration-jdbc

spring.integration.jdbc.initialize-schema=always

사용 가능한 경우 개발자는 속성을 사용하여 RSocket 서버를 구성하고 들어오는 RSocket 메시지를 처리하는 데 사용하거나 구성 요소를 사용할 수 있습니다. 이 인프라는 스프링 통합 RSocket 채널 어댑터 및 처리기를 처리할 수 있습니다(지정된 지정된).spring-integration-rsocket"spring.rsocket.server.*"IntegrationRSocketEndpointRSocketOutboundGateway@MessageMapping"spring.integration.rsocket.server.message-mapping-enabled"

스프링 부트은 다음과 같은 구성 속성을 사용하여 자동으로 구성할 수도 있습니다.ClientRSocketConnector

# Connecting to a RSocket server over TCP
spring.integration.rsocket.client.host=example.org
spring.integration.rsocket.client.port=9898

# Connecting to a RSocket Server over WebSocket
spring.integration.rsocket.client.uri=ws://example.org

자세한 내용은 통합자동구성 통합속성 클래스를 참조하십시오.

기본적으로 마이크로미터 빈이 있는 경우 스프링 통합 메트릭은 마이크로미터에서 관리합니다. 레거시 스프링 통합 메트릭을 사용하려는 경우 응용 프로그램 컨텍스트에 콩을 추가합니다.meterRegistryDefaultMetricsFactory

4.24. 스프링 세션

Spring Boot는 광범위한 데이터 저장소에 대한 스프링 세션 자동 구성을 제공합니다. Servlet 웹 응용 프로그램을 빌드할 때 다음 저장소를 자동으로 구성할 수 있습니다.

  • Jdbc
  • Redis
  • 헤이즐캐스트
  • Mongodb

반응형 웹 응용 프로그램을 빌드할 때 다음 저장소를 자동으로 구성할 수 있습니다.

  • Redis
  • Mongodb

클래스 경로에 단일 스프링 세션 모듈이 있는 경우 스프링 부트은 해당 저장소 구현을 자동으로 사용합니다. 구현이 두 개 이상인 경우 세션을 저장하는 데 사용할 StoreType을 선택해야 합니다. 예를 들어 JDBC를 백 엔드 저장소로 사용하려면 다음과 같이 응용 프로그램을 구성할 수 있습니다.

spring.session.store-type=jdbc
  에 설정하여 스프링 세션을 비활성화할 수 있습니다. store-typenone

각 저장소에는 특정 추가 설정이 있습니다. 예를 들어 다음 예제와 같이 JDBC 저장소에 대한 테이블 이름을 사용자 지정할 수 있습니다.

spring.session.jdbc.table-name=SESSIONS

세션의 시간 시간을 설정하려면 속성을 사용할 수 있습니다. 해당 속성이 설정되지 않으면 자동 구성이 값으로 다시 떨어집니다.spring.session.timeoutserver.servlet.session.timeout

4.25. JMX에 대한 모니터링 및 관리

Java 관리 확장(JMX)은 응용 프로그램을 모니터링하고 관리할 수 있는 표준 메커니즘을 제공합니다. 스프링 부트은 ID가있는 콩으로 가장 적합한 노출 . 스프링 JMX 주석(또는)에 주석이 달린 콩은 노출됩니다.MBeanServermbeanServer@ManagedResource@ManagedAttribute@ManagedOperation

플랫폼에 표준을 제공하는 경우 스프링 부트은 필요한 경우 해당 및 기본값을 VM에 사용합니다. 모든 것이 실패하면 새 가 만들어집니다.MBeanServerMBeanServerMBeanServer

자세한 내용은 JmxAutoConfiguration 클래스를 참조하십시오.

 

Spring Boot Reference Documentation

Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave, Eddú Meléndez, Scott Frederick

2.3.1.RELEASE

Copyright © 2012-2020

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.

출처 : https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/htmlsingle/#boot-features-resttemplate

반응형

'IT > SpringBoot' 카테고리의 다른 글

스프링 부트 #4.27-4.30. 웹 소켓 등  (0) 2020.06.16
스프링 부트 #4.26. 테스트  (0) 2020.06.16
스프링 부트 #4.14. 메시징  (0) 2020.06.15
스프링 부트 #4.13. 캐싱  (0) 2020.06.15
스프링 부트 #4.12. NoSQL  (0) 2020.06.15