반응형

Spring/Java,Spring 7

[Spring] 생성자 주입 방식

📢 의존성 주입할 때 생성자 주입 방식을 써야 합니다! 이전글 Lombok에 대해서 정리한 이유도 스터디를 진행하면서 @RequiredArgsContructor 어노테이션에 대해 조사하다가 Lombok을 정리해 보자! 하면서 시작했었는데요, 이번엔 해당 어노테이션이 쓰인 이유를 조사하다가 생성자 주입방식에 대해서 정리하게 됐습니다 🙂 Spring을 어느 정도 써보셨던 분들은 @Controller와 @Service에서 @Autowired가 없다면 어색하게 느껴지실 텐데요. @Autowired는 클래스와 bean 사이의 의존 관계를 맺어주는 어노테이션입니다. 생성자 주입방식을 들어가기 전에 Spring의 DI/IoC에 대해 간략하게 짚고 넘어가겠습니다. 객체를 사용자가 new 키워드를 통해 생성하고, 소멸시..

Spring/Java,Spring 2023.09.22

Session Storage Strategy

세션 저장소 전략이 필요한 이유 SpringBoot 를 활용하여 웹서비스를 만들 때에 보통 내장 톰캣을 사용합니다. 웹 서비스를 구축 할 때에 세션 저장소를 고려하지 않고 단순히 로그인 기능을 구현 할 경우 애플리케이션을 재실행하면 기존 로그인이 풀립니다. 풀리는 이유는 로그인 정보를 세션에 담고 있는데 세션이 내장 톰캣의 메모리에 저장되기 때문입니다. 기본적으로 세션은 실행되는 WAS(Web Application Server)의 메모리에서 저장되고 호출됩니다. 메모리에 저장되다 보니 내장 톰캣처럼 애플리케이션 실행 시 실행되는 구조에선 항상 초기화가 됩니다. 즉, 배포할 때마다 톰캣이 재시작되는 것! 그리고 한 가지 문제가 더 있습니다. 일반적으로 서비스의 서버는 2대 이상의 서버를 운영하는 경우가 많..

Spring/Java,Spring 2023.09.20

Lombok 이란?

Lombok을 왜 쓰냐? Getter, Setter, Contructor 등을 자동으로 생성해줘서 귀찮은 일을 줄여 준다. 단, 무한 루프에 빠지거나 무분별하게 setter를 남발할 수 있으니 조심! Annotaion 정리 @NonNull : 자동으로 null 체크를 진행하며 null인 경우 NullpointException 을 발생 시킨다. @Cleanup : 자동으로 자원을 관리한다. close() 메소드를 호출하여 자원을 종료시긴다. @Getter getter 를 생성해준다. lazy : Getter 를 캐시하며, Getter가 CPU가 많이 필요하거나 메모리가 많이 필요한 표현식의 경우 유용 (private final 변수에만 사용 가능, 롬복에서 잠금 처리하여 Thread-safe 일 필요 없다..

Spring/Java,Spring 2023.09.18

Java 8 표준 API의 함수형 인터페이스

1. 함수형 인터페이스는 java.util.fuction 표준 API 패키지로 제공하며 크게 5가지 종류가 있다. : Consumer, Supplier, Function, Operator, Predicate 2. 매개타입으로 사용되어 람다식을 매개값으로 대입할 수 있도록 해준다. 각 인터페이스는 또 여러개의 인터페이스로 나뉜다 두개의 매개 변수를 받는 인터페이스라면 bi 라는 접두사, 정수 타입을 매개변수로 전달받는 인터페이스라면 int 라는 접두사가 혹은 실수 타입을 반환하는 인터페이스라면 AsDouble과 같은 접미사가 달려있는 등 일정한 네이밍 규칙이 존재한다. Consumer 계열 : 매개 값은 있고, 반환 값은 없다. 매개 값을 전달받아 사용하고 아무것도 반환하지 않을 때 사용된다. 이를 소비 ..

Spring/Java,Spring 2023.09.17

System.nanoTime & System.currentTimeMillis (feat. Intstant.now())

System.currentTimeMillis 시스템의 시간을 사용하기 위해서 or 현재 시간을 알아내기 위해서 주로 사용 밀리초 단위 사용 (ms) - 1초 = 1000ms System.currentTimeMills는 1970 -01 -01 (협정 세계시) 기점으로 흐른 시간을 ms 로 표현해주어 현재 시간으로 변환이 가능 System.nanoTime 기준 시점에서 경과 시간을 측정하는데 주로 사용 나노초 단위 사용 (ns) 1초 = 1e+9 시스템 시간, 현재 시간과 무관 JVM의 정밀한 시간 소스의 현재 값은 long타입으로, 나노 세컨트 (1/10^-9)로하게 정밀한 시간 표현 가능 다른 서버간 통신 시간 측정시 사용하면 안됨 결론 정교한 시간 성능을 측정하기 위해서는 nanoTime()을 추천 시..

Spring/Java,Spring 2023.09.16

Oracle JDK & Open JDK

JDK 란 JDK 는 Java Development Kit 의 줄임말로 Java 플랫폼에 사용되는 소프트웨어 개발 환경 이라고 이해 하면된다. Java Application 을 실행하기 위해서 JVM이 필요하고 컴파일 하기 위해서 JDK가 필요하다. JDK를 설치하면 JVM도 함께 설치된다. 독립형 JRE 보다 더 많은 도구와 Java 애플리케이션 개발에 필요한 다른 구성 요소가 포함되어 있다. JDK는 2개 버전으로 나뉜다. 폐쇄적인 상업 코드 기반의 Oracle JDK, 오픈 소스 기반의 OpenJDK Oracle이 2010년에 Sun Microsystems을 인수하여 Oracle JDK 가 됨 Oracle JDK과 Open JDK 논쟁 LTS(Long term support) 릴리즈 : Java8 ..

Spring/Java,Spring 2023.09.15

[Spring Boot] Spring boot 버전에 맞는 Dependency 버전 찾기

Spring이나 Spring Boot와 같은 프레임워크를 이용하여 개발을 진행할 때 외부 라이브러리 (API)를 사용하기 위해서 Dependency를 사용하는데 이때 내가 쓰는 프레임워크의 버전을 지원하는 라이브러리 버전을 Import 하는 것이 중요합니다. 그래서 이번 포스팅은 프레임워크에 맞는 Dependency 버전을 확인 하는 방법을 알아보겠습니다. 사소한 내용이라고 생각 할 수 있지만 많은 시간을 아끼게 될 수 있습니다 😉 1. https://spring.io/ 로 접속 2. 상단 메뉴 중 Project > Spring Boot 또는 Spring Framework 클릭 (사용하고 있는 Framework 클릭) 3. 하위 탭에서 LEARN 클릭 후에 원하는 버전의 Reference Doc 클릭 4..

Spring/Java,Spring 2021.10.11
반응형