>Java >java지도 시간 >Spring에서 전문가처럼 구성 읽기

Spring에서 전문가처럼 구성 읽기

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-23 12:05:13380검색

Reading configuration like a pro on Spring

소개

우리 모두 알고 있듯이 Spring은 동일한 목표를 달성하기 위한 여러 가지 방법을 제공하며 그 중 하나는 구성 파일에 등록된 값을 검색하는 방법입니다.

Spring을 처음 사용하는 경우 @Value 또는 application.properties 파일에서 값을 검색하기 위해 application.yml 주석을 사용하는 코드를 접할 수 있습니다. 이 접근 방식을 사용하는 경우에는 아무런 문제가 없습니다. 그러나 애플리케이션에 불필요한 복잡성이 발생할 수 있습니다.

@Value질문

@Value 사용 시 가장 큰 문제점은 다른 값이 포함된 변수를 처리할 때입니다. 이것이 말이 되나요? 이해가 안 가? 예를 살펴보겠습니다.

다음 구성 파일이 있다고 가정합니다.

<code>mail.user=dev@locahost
mail.password=123
mail.headers.x-from=Ekerdev
mail.headers.x-custom=custom</code>

다음과 같이 해야 합니다.

<code class="language-java">@Service
public class CustomService {
    @Value("${mail.user}")
    private String user;

    @Value("${mail.password}")
    private String password;

    @Value("${mail.headers.x-from}")
    private String xFrom;

    @Value("${mail.headers.x-custom}")
    private String xCustom;
}</code>

지금까지는 문제가 없습니다. 그러나 이제 애플리케이션이 코드의 여러 위치에서 동일한 변수를 사용해야 한다고 상상해 보십시오. 얼마나 많은 중복 코드를 얻게 될지 생각해 보세요. 그렇죠?

솔루션

따라서 가장 좋은 해결책은 @ConfigurationProperties 주석을 사용하는 것입니다. 이렇게 하면 애플리케이션이 클래스에 변수를 주입하는 것이 더 쉬워지고 아래 예제와 같이 이를 Spring의 다른 종속성처럼 사용할 수 있습니다.

Spring 3.x 솔루션 1:

<code class="language-java">@Configuration
@ConfigurationProperties("mail")
public record MailProperties(
    String user,
    String password,
    Map<String, String> headers
) {}</code>

Spring 3.x 솔루션 2:

<code class="language-java">@Configuration
@ConfigurationProperties("mail.headers")
public record MailHeadersProperties(
    String xFrom,
    String xCustom
) {}

@Configuration
@ConfigurationProperties("mail")
public record MailProperties(
    String user,
    String password,
    MailHeadersProperties headers
) {}</code>

Spring 2.x 솔루션 1:

<code class="language-java">@Data
@AllArgsConstructor
@ConfigurationPropertiesScan
@ConfigurationProperties("mail")
public class MailProperties {
    private String user;
    private String password;
    private Map<String, String> headers;
}</code>
<code class="language-java">@SpringBootApplication
@ConfigurationPropertiesScan("your.package.mailproperties") //your.package.mailproperties  替换成你的包路径
public class ExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}</code>

귀하의 서비스 이용 속성은 다음과 같습니다.

<code class="language-java">@Service
@RequiredArgsConstructor
public class CustomService {
    private final MailProperties mailProperties;
}</code>

장점

@ConfigurationProperties 사용의 가장 큰 장점은 코드에서 @Value 주석을 찾을 필요가 없어 코드를 더 쉽게 읽을 수 있다는 것입니다.

위 내용은 Spring에서 전문가처럼 구성 읽기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.