https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
CH2. 스프링 부트 시작하기
ㅁ 설치
- pom.xml에 아래와 같이 추가
https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#getting-started-maven-installation
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- Application.java 생성 후, @SpringBootApplication Annotation 붙이기
- main 클래스 생성 후, SpringApplication.run(Application.class,args)
- mvn package 를 통해 jar로 build 할수 있으며, 이것을 실행하면 내부 톰캣으로 바로 웹이 띄워짐
* start.spring.io 에서 다운로드도 가능
ㅁ 스프링 부트 프로젝트 구조
- java : java 파일들이 들어감
- resource : java 외 파일들이 들어감, :classpath 등으로 참조 가능, / 경로라 생각하면 됨
- @SpringBootApplication 어노테이션이 붙어있는 파일의 component scan 시, 해당 파일의 패키지 아래에 있는것만 bean으로 등록됨 ( 권장 위치 확인하여 main 파일 생성해야함 )
CH3. 스프링 부트 원리
ㅁ 의존성 관리 이해
- maven 의 <parent> 태그(spring-boot-starter-parent) 를 설정하여 실행하는게 좀 더 많은 설정을 보정받아 진행할 수 있음
ㅁ 의존성 관리 응용
- dependency 태그로 추가
- 버전 관리
<properties>
<spring.version>5.0.6.RELEASE</spring.version>
</properties>
ㅁ 자동 설정 이해
- @SpringBootApplication == @Configuration + @ ComponentScan + @EnableAutoConfiguration
- @EnableAutoConfiguration 보면 conditional 이라는 조건이 많은데, 조건에 따라 자동으로 설정하게함
- META-INF의 spring.factories 참고
ㅁ 자동 설정 만들기 1부
- 1.componentscan으로 빈 등록
2. AutoConfiguration으로 빈 등록함
> 나는 componentscan의 빈만 갖고싶다.
-> @ConditionalOnMissingBean
- properties를 통해 AutoConfiguration 설정하기
> @ConfigurationProperties("holoman") 를 통해 프로퍼티를 만들어주고,
@EnableConfigurationProperties(HolomanProperties.class) 를 설정해서 프로퍼티를 삽입한다.
=> ConfigurationProperties를 설정한 곳에서 application.properties에 holoman.xxx 라고 입력한 것들을 값을 받아 저장하고,
이를 객체로 만들어준다.
ㅁ 내장 웹 서버 이해
- 톰캣 호출하여, 서블릿 넣기
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
Context context = tomcat.addContext("/", "/");
HttpServlet servlet = new HttpServlet() {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("<html><head><title>");
writer.println("Hey, Tomcat");
writer.println("</title></head>");
writer.println("<body><h1>Hello Tomcat</h1></body>");
writer.println("</html>");
}
};
String servletName = "helloServlet";
tomcat.addServlet("/", servletName, servlet);
context.addServletMappingDecoded("/hello", servletName);
tomcat.start();
tomcat.getServer().await();
- 기본적으로 AutoConfiguration 에서 tomcat 및 Servlet, 포트 등을 다 자동으로 설정해줌
○ ServletWebServerFactoryAutoConfiguration (서블릿 웹 서버 생성)
■ TomcatServletWebServerFactoryCustomizer (서버 커스터마이징)
○ DispatcherServletAutoConfiguration
■ 서블릿 만들고 등록
'Spring' 카테고리의 다른 글
[Spring] 스프링 부트 개념과 활용 - 4 (0) | 2021.07.19 |
---|---|
[Spring] 스프링 부트 개념과 활용 - 3 (0) | 2021.07.19 |
[Spring] 스프링 부트 개념과 활용 - 2 (0) | 2021.07.10 |
[Spring] 스프링 프레임워크 핵심 기술 정리 - 2 (0) | 2021.07.05 |
[Spring] 스프링 프레임워크 핵심 기술 정리 - 1 (0) | 2021.07.04 |