728x90
반응형
JDK 17 을 서포트하는 spring 6.0대 버전이 등장했고,
Spring Boot 3.0 도 java 17을 최소 버전으로 요구하기 시작했다.
LTS 버전이 java 11 이후 17 버전으로 확장 되었다.
Java 17에서는 많은 기능이 추가되고 향상되었지만,
현재 쓰는 11버전 이후에 추가된 (개인적으로 써보고 싶은) 기능들은 다음과 같다.
- 텍스트 블록 기능.
- 향상된 Switch 문 및 패턴 매칭 기능.
- Record 불변 객체 타입 ( Lombok 의 value)
- 프로퍼티 포함 생성자
- private final 적용
- getter 메소드 생성
- toString, equals, hashcode method 생성
- annotation울 붙이도록 허용.
- Sealed class
- 허용된 (permits) 클래스 외에 접근이 불가능.
기타 다른 추가사항들은 다음과 같다.
그 외 GC 변경사항은 다음과 같다.
- heap 메모리에서 사용되지 않는 객체는 개발자가 신경쓰지 않아도 JVM에서 자동으로 제거해주고 관리해준다.
- 개발에 집중 하는 장점이 있지만 Mark and Sweep의 과정에서 스레드가 중단되는 점으로 인해 성능이 떨어질 수 있다는 단점도 있다.
- 이러한 단점을 확인해보고 싶다면 System.gc() 메소드를 호출하면 되지만, 너무 무겁다고 한다.
- 개발에 집중 하는 장점이 있지만 Mark and Sweep의 과정에서 스레드가 중단되는 점으로 인해 성능이 떨어질 수 있다는 단점도 있다.
Spring?
자바의 오픈소스 애플리케이션 프레임워크 중 하나로 스프링의 기본철학은 특정 기술에 종속되지 않고 객체를 관리할 수있는 프레임워크를 제공하는 것. 컨테이너로 객체를 관리하면서 의존성주입과 제어의 역전을 통해 결합도를 낮춘다.
의존성 주입 (Dependency Injection)
- 컨테이너가 의존관계를 자동으로 연결
- 스프링 컨테이너가 의존관계를 자동으로 연결해준다. 직접 의존하는 객체를 생성하거나, 검색해서 가져올 필요가 없어서 결합도가 낮아지는 장점이 있다.
더보기
의존성 주입 중 생성자 주입과 필드 주입 방식
필드 주입 ( @Autowired )
- 애플리케이션 구동은 잘 되지만, 서로의 메소드를 계속해서 호출하는 순환 참조를 실제 호출 시점에서 알 수 있다. 호출 시점에서 알 수 있다는 점은 컴파일 당시에는 에러 사항을 감지 할 수 없다는 점이다.
생성자 주입 ( class 생성자 파라미터 등 )
- 애플리케이션 구동 시점에서 컴파일 오류를 뱉어내므로, 오류 상황을 미연에 방지 할 수 있다는 장점이 있다.
IOC (Inversion Of Control) 제어의 역전
- 제어권이 사용자가 아닌 프레임워크에 있음
- 사용자 주도 제어는 코딩 시, 라이브러리 등을 가져다가 쓰는 것과 같은 행위를 제어하는 게 사용자 중심이라는 것.
- 인스턴스의 생성과 소멸을 컨테이너가 관리 한다는 것.
AOP (Aspect Oriented Programming)
- 관점 지향 프로그래밍.
- OOP (객체지향프로그래밍) 을 보완하기 위해 등장했다.
- OOP에서의 중복을 줄 일 수 없는 부분을 줄이기 위해 종단면에서 바라보며 처리한다.
- 로깅, 트랜잭션, 에러 처리 등, 메서드 전후의 지점에 자유롭게 설정한다.
- 주소나 파라미터, 애노테이션 등 다양한 방법으로 대상을 지정한다.
- 로직을 기준으로 핵심적인 관점. 부가적인 관점으로 나누어서 보고, 관점을 기준으로 각각 모듈화 하겠다는 것.
- 공통 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
- 비즈니스 로직에 집중하고, 적용하고싶은 부가 관점은 로직을 실행하기 위해 행해지는 DB 연결이나 Logging, file I/O 등을 예로 들 수 있다.
- 예시로,
- @Before , @After, @AfterRunning @AfterThrowing, @Around
스프링에서 실행되는 AOP 는 기본적으로 프록시 방식으로 동작한다.
- 프록시 패턴은 어떤 객체를 사용 할 때에, 객체를 직접 참조하지 않고, 해당 객체를 대행하는 객체를 통해서 원하는 대상객체에 접근하는 방식이다.
- Spring Boot
- Spring Boot 는 기존 스프링으로 만드는 어플리케이션의 복잡한 설정들을 보다 간편하게 처리해준다.
- 내장형 톰캣을 통해 기존의 별도 외장 웹서버 필요성 X
- starter를 통한 dependency 자동화
- XML에 의존하던 설정들이 간편해짐.
- Spring Boot 는 기존 스프링으로 만드는 어플리케이션의 복잡한 설정들을 보다 간편하게 처리해준다.
spring Boot initializr 사이트에서 설정을 할 경우 기본 셋팅된 프로젝트를 생성해준다.
출처
320x100
반응형
'JAVA > SPRING' 카테고리의 다른 글
[Spring] Spring Security setting과 에러 사항 수정 과정 기록과 OAuth2 (0) | 2023.08.10 |
---|---|
[Spring] @Valid , @Validated, BindingResult (0) | 2023.06.29 |
[NAVER maps 길 찾기] springboot + webClient 로 API 호출 (0) | 2022.09.02 |
springBoot / mapstruct (0) | 2022.06.08 |
spring boot / H2 DB 세팅 (0) | 2022.05.29 |