일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 조대협
- Text Index
- Code Presso
- Spring Framework
- java spring framework
- mongoDB
- 스프링 부트
- JPA
- NoSQL
- 자바
- 위치 기반 쿼리
- STS
- AWS Developer
- spring boot
- Jenkins
- iam
- EC2
- Spring
- Write Concern
- 스프링
- 쓰기 고려
- 스프링 프레임워크
- 코드프레소
- 읽기 고려
- 대용량 아키텍처와 성능 튜닝
- Java
- Amazon Web Service
- aws
- 몽고디비
- AWS 자격증
- Today
- Total
개발과 기록의 조화
[Spring Boot] 아주 간단한 웹 애플리케이션 예제 작성 본문
[Spring Boot] 아주 간단한 웹 애플리케이션 예제 작성
dlaudtjr03 2020. 2. 1. 21:33
해당 게시물은 학습 및 기록 목적으로 작성되었습니다. 사실과 다른 내용이 있을 수 있으며, 오류가 있거나 궁금한 점은 댓글이나 dlaudtjr07@gmail.com 으로 메일 주시면 감사하겠습니다.
해당 게시물은 이전의 글과 이어집니다.
Spring Boot는 다 알아서 한다
스프링 부트를 생성했을 때 메인 클래스에는 @SpringBootApplication 일이라는 어노테이션이 달려 있습니다. 이 어노테이션을 들어가 보면
//생략
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
//생략
}
여러 가지의 어노테이션들이 선언되어져 있는 것을 확인할 수 있는데 , 이 중에 중요한 어노테이션은 ComponentScan과 SpringBootConfiguration , EnableAutoConfiguration 3가지입니다.
ComponentScan은 Component 어노테이션 뿐만 아닌 streotype들 , 즉 Service, Repository 등의 ‘어노테이션’이 붙은 클래스들을 자동 스캔 후 Bean에 등록하는 역할을 합니다.
SpringBootConfiguration은 자바 클래스가 Spring 환경 설정임을 알려주는 Configuration 어노테이션과 같은 역할을 합니다. ‘스프링 부트 환경설정 클래스’임을 확인시켜주기 위해 Configuration 앞에 접두어로 ‘SpringBoot’를 붙힌 것입니다. 기능상의 차이는 없습니다.
EnableAutoConfiguration은 스프링 부트에서 spring.factories라는 파일에 미리 설정한 자바 설정을 빈으로 등록합니다.
Maven Dependencies 라이브러리에 spring-boot-autoconfigure-{스프링 버전}.jar 파일을 찾아서, 3_1_1 , 3_1_2 그림과 같은 경로로 들어가 spring.factories 파일을 열어보도록 합시다.
# Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\
org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener
# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.boot.autoconfigure.BackgroundPreinitializer
# Auto Configuration Import Listeners
org.springframework.boot.autoconfigure.AutoConfigurationImportListener=\
org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener
# Auto Configuration Import Filters
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
org.springframework.boot.autoconfigure.condition.OnBeanCondition,\
org.springframework.boot.autoconfigure.condition.OnClassCondition,\
org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.cloud.CloudServiceConnectorsAutoConfiguration,\
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
#생략
특정 조건을 제외한 모든 설정은 autoConfiguration에 의해 bean에 적용됩니다.(특정 조건은 ‘@ConditionalOn특정설정’ 어노테이션에 정의되어져 있습니다)
이러한 이유로 스프링 부트에서는 기본 설정 없이도 Spring MVC 구조를 이용할 수 있는 것입니다. (COC 채택)
Controller 예제
String과 VO객체를 리턴하는 API를 아주 간단하게 만들어 보도록 합시다.
hello() 메소드는 , String 그대로를 리턴하는 API이므로, 웹에 문자열 그대로 표시될 것입니다.
url에 http://localhost:8080/hello?name=MyoungSeok 이라고 치면,
3_1_3 그림과 같이 문자열 그대로만을 출력할 것입니다.
getBoard() 메소드는 BoardVO 클래스에 정의한 변수들, 즉 VO 객체를 JSON 데이터로 변환해 리턴한다.(라이브러리 의존성 파일에 Jackson 라이브러리도 추가되어져 있습니다)
그런데 VO 객체에 getter , setter 메소드가 정의되어져 있지 않습니다. 그 이유는 Unit 1에서 정의한 Lombok 라이브러리 의존성 설정 때문입니다. 하지만 Lombok은 의존성 설정만 한다고 해서 사용이 가능한 것은 아닙니다. 따로 설치를 해주어야 하는데, Lombok의 설치 방법과 어노테이션 설정법은 여기를 참고하시면 됩니다.
boardvo 라는 변수에 새 BoardVO 객체를 생성해 데이터를 넣고 url에 http://localhost:8080/board 를 요청하면,
JSON 형식으로 변환해 브라우저에 전달하게 됩니다.
해당 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.
'Web Framework > Java Spring Framework' 카테고리의 다른 글
[Spring Boot] JPA 연동 - JPA 기본 설정 (0) | 2020.02.02 |
---|---|
[Spring Boot] JPA 연동 - 개념 이해하기 (0) | 2020.02.02 |
[Spring Boot] 프로젝트 구조 (0) | 2020.02.01 |
[Spring Boot] Lombok 개념 및 설치 (0) | 2020.02.01 |
[Spring Boot] 프로젝트 만들기 (0) | 2020.02.01 |