관리 메뉴

제뉴어리의 모든것

SpringBoot - 자동 설정파일 만들기 1 본문

Spring Boot

SpringBoot - 자동 설정파일 만들기 1

제뉴어리맨 2021. 4. 3. 15:19

- 자동 설정이란?

말 그대로 빈들의 프로퍼티 값들을 자동으로 설정해 주는것이다.

예를들어 Member라는 빈이 존재한다고 하자.

그 안에는 여러 프로퍼티가 있고, 그중 하나가 name이다.

그 name을 내가 따로 설정해주지 않아도 자동으로 "januaryman"이라고 설정을 해주는것이다.

 

그리고 Spring Boot 이런 자동설정으로 인해 프로젝트에 존재하는 수많은 빈들을 자동설정해줌으로써

프로그래머는 그냥 그 빈을 가져다 쓸수 있으면 필요한 부분만은 조금씩 수정하여 개발을 진행한다.

(SpringBoot 프로젝트에서는 main 함수 위에 있는 @SpringBootApplication 내부에 @EnableAutoConfiguration 으로인해 자동 설정이 이루어진다)

 

그럼 만들어보자.

 

환경 :

OS : Windows 10

IDE : Intellij Ultimate 2020.3

 

1. 자동 설정을 적용할 클래스 정의와 자동설정파일이 정의 될 프로젝트를 하나 생성한다.

Spring Initializr를 사용하여 프로젝트를 생성한다.

위에 이미지와 같이 생성한다 (jar로 생성한다)

아무런 의존성도 추가하지 말고 계속 Next를 진행하여 생성한다.

 

2. pom.xml에 자동 설정을 위한 설정들을 추가한다.

<dependencies></dependencies> 내부에 아래 의존성을 추가한다 (자동 설정을 해주는 의존성들)

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure-processor</artifactId>
            <optional>true</optional>
        </dependency>

</dependencies> 바로 아래에는

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

위에 내용을 추가해준다. (의존성의 버전 관리를 해주는 설정)

 

3. 패키지를 생성하고 자동설정할 클래스와 자동설정파일을 생성한다.

 

위와 같이 january라는 패키지를 하나 만들어 주고

그 하위에 자동설정 대상인 클래스(january) 와 자동설정파일(januaryConfiguration)을 생성한다.

 

4. january 클래스 정의

package com.january.autoconfiguration.january;

//자동설정으로 설정 해줄 클래스
public class january {

    String name;

    int age;

    @Override
    public String toString() {
        return "january{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

 

5. januaryConfiguration 정의

package com.january.autoconfiguration.january;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


//january맨을 자동으로 설정해줄 설정파일
@Configuration
public class januaryConfiguration {

    @Bean
    public january january()
    {
        january january = new january();
        january.setName("antero kim");
        january.setAge(30);
        return january;
    }
}

 

6. 프로젝트 Install

우측에 보이는 Maven창에서 Install을 클릭하여 해당 프로젝트를 jar로 만든 뒤 로컬 저장소에 저장한다.

(개발을 진행하고 있는 maven 로컬 저장소에 jar를 저장해두면 다른 프로젝트에서 해당 jar를 의존성에 추가할 수 있다)

 

=== 아래의 내용부터는 새로운 프로젝트

 

7. 지금까지 만든 클래스와 자동설정 파일을 적용할 프로젝트 생성

위에서 만든 프로젝트와 동일하게 생성하되 프로젝트명만 알아서 설정한다.

 

8. pom.xml에 만들어둔 jar 의존성 추가

<dependencies></dependencies> 안에 우리가 만들어 둔 jar파일을 의존성으로 추가한다.

groupId, artifactId, version은 이전 프로젝트에 pom.xml 에서 <parent> </parent>항목아래있다.

     <dependency>
            <groupId>com.january</groupId>
            <artifactId>autoconfiguration</artifactId>
            <version>0.0.1-SNAPSHOT</version>
     </dependency>

빨간 네모칸을 눌러 적용시켜준다.

 

9. 의존성 추가 확인

위와 같이 추가 되었다.