Dexlee 2021. 11. 3. 20:54

 

springboot 특징

1. connection pool

: hikariCP(DBCP library)는 스프링 부트 2.0부터 default JDBC connection pool이다.

2. 의존성 관리

: spring-boot dependencies에서 버전을 관리하는 의존성은 버전을 명시하지 않아도 된다. 하지만 springboot dependencies가 지원 안 해주는 의존성은 버전을 꼭 명시해줘야 한다.

3. @ConponentScan

@Component 가 붙은 애노테이션들

: @Configuration @Repository @Service @Controller @RestController 가 붙은 class를 빈으로 등록해준다.

4. @Configuration

: 자동 설정 파일로 붙여놓음. configure 할 class에 넣음.

 

5. Spring MVC로의 모든 요청과 응답은 DispatcherServlet이 관리하고 있다.

6. Spring 프로젝트의 대부분은 ApplicationContext을 통해 Bean을 관리한다.

7. 간편한 설정 외에도 부트의 최고 장점으로 꼽는 것이 단독 애플리케이션만으로 배포가 되도록 하는 것이다.

  • Boot의 경우 JDK 설치하고, java -jar ~~~.jar로 실행시키면 웹서버 구축 끝이다.
  • Tomcat에 대한 설정도 application.properties/yml로 하기 때문이다
  • war도 단독으로 실행이 가능하기 때문에 진짜 war 말고 jar를 쓰자는 얘기라기보다는 단독 파일로 실행이 가능한 방향으로 배포를 진행하자는 얘기로 보면 된다.
  • Boot는 Java code로 설정하는 것조차 더욱 간단하게 application.properties/application.yml로 관리할 수 있게 해 준다.
  • Spring boot가 대부분의 설정을 자동화하여 준다고 해도 보안(security) 관련 부분은 대부분 개발자가 직접 구현해야 한다.

8. ViewResolver

  • JSP를 제외한 다른 템플릿 엔진의 경우 의존성만 추가하면 다른 설정 없이 바로 사용이 가능하다
  • 사용되는 의존성들은 spring-boot-starter-xxxx의 이름을 가진다
    • thymeleaf를 사용한다면 spring-boot-starter-tyhmeleaf를 추가하면 된다.
  • 디폴트 설정은 prefix는 src/main/resources/templates이며, suffix는 해당하는 템플릿의 확장자명이 된다.

9. Actuator

  • SpringBoot 애플리케이션의 상태를 실시간으로 확인할 수 있다. 현재 Context에 등록된 Bean 확인, 사용 중인 Heap 사이즈, 최근 요청한 HTTP 상태 등등 관련한 모든 정보를 볼 수 있다.

10. cache

  • 캐시란 동일한 요청이 들어오면 복잡한 작업을 수행해서 결과를 만드는 대신 이미 보관된 결과를 바로 돌려주는 방식을 말한다.
  • 일반적으로 사용자가 만드는 데이터보다는 서비스에서 제공하는 콘텐츠(뉴스, 허브, 실시간 검색어 등)에 대부분 적용해서 사용 중이다.
  • 캐시의 경우 모든 상황에서 쓸 수 있는 것은 아니다. 아래의 조건을 만족한다면 캐시 사용을 한번 고려해보는 것이 좋다.
    • 반복적으로 동일한 결과를 돌려주는 작업
    • 각 작업의 시간이 오래 걸리거나 서버에 부담을 주는 경우 (외부 API/DB 데이터 호출 등)

 

11. AOP 정리

  • 로그 같은 처리는 따로 모아서 처리해주면 좋다.
  • @Aspect

 

12. Validation

  • 데이터 값 유효성 체크
  • Validation 어노테이션 사용
  • ex) 휴대폰 번호 유효성 체크. 프런트에서도 처리해주고, 백엔드에서도 처리해줌.
  • 프런트엔드에서만 유효성 검사가 문제인 이유
    • 프런트의 검증 코드는 언제든지 회피할 수 있다.
    • 해결 
      • 프런트와 백엔드 양쪽에 모두 검증 코드를 작성한다.
      • 백엔드에 검증 코드를 작성 후, 백엔드 결과에 따라 프런트는 메시지만 노출한다.

 

13. batch

  • 바로 이런 단발성으로 대용량의 데이터를 처리하는 애플리케이션을 배치 애플리케이션이라 함.

 

14. OAuth

  • google OAuth로 계정 권한 관리 최근 많은 회사에서 사내 백오피스 시스템의 로그인을 구글 OAuth로 진행할 수 있음

 

 

 

 

 

reference

 

- spring boot

https://github.com/ihoneymon/translate-spring-boot-reference#%EC%8B%9C%EC%9E%91

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/