TIL/Java & Spring Boot

3가지 방법이 있다@Autowired에 required false 옵션을 준다false 옵션을 주면 해당 빈이 없는 경우에는 아래 메서드를 아예 실행 시키지 않는다@Autowired(required = false)public void setNoBean1(Member noBean1) { 콘솔 출력}주입 받아야하는 빈에 @Nullable 어노테이션을 달아준다빈이 없는 경우에는 null을 반환한다@Autowiredpublic void setNoBean1(@Nullable Member noBean1) { 콘솔 출력}빈을 Optional로 감싸준다빈이 없는 경우 Optional.empty를 반환한다@Autowired(required = false)public void setNoBean1(Optional noBea..
@Transactional이란?스프링 프레임워크 어노테이션트랜잭션 경계를 정의하는 하나의 작업 단위이다지정된 경계안에서 데이터베이스 작업이 성공하지 않으면 롤백되도록 보장해준다즉, 작업 단위 모두가 성공해야 데이터베이스에 반영한다[[스프링이 데이터베이스 레벨의 트랜잭션을 추상화하여 다룬다]]트랜잭션 전파 (Propagation)@Transaction(propagtion = Propagation.옵션명)트랜잭션이 어떻게 전파될지를 설정할 수 있다이 말은 트랜잭션이 다른 트랜잭션과 어떻게 연관되는지를 정의하는거다예를 들어서 이미 시작된 트랜잭션이 있을 때 새로운 트랜잭션으로 시작할지 아니면 기존 트랜잭션에 합류할지 등을 설정할 수 있다옵션:REQUIRED (기본 설정)이미 트랜잭션이 존재하면 그 트랜잭션에 ..
병렬처리란?여러 개의 작업을 동시에 수행해서 전체 처리 시간을 단축하는 방법을 말한다주로 멀티코어 프로세서를 활용하여 하나의 작업을 여러 부분으로 나누고 나눈 부분을 동시에 처리하는 방식이다자바에서는 주로 java.util.stream 패키지의 parallel stream이나 java.util.concurrent 패키지의 여러 클래스나 인터페이스를 사용해서 구현한다장점성능 향상여러 코어를 사용해서 순차적 처리보다 더 빠르게 완료할 수 있다대량의 데이터나 복잡한 계산을 처리할 때 좋다효율적인 자원 활용모든 코어를 효율적으로 사용해서 시스템 자원을 최대한 활용할 수 있다단일 코어에서 작업이 병목 현상을 일으키는 걸 방지한다응답 시간 단축병렬 처리로 작업을 나누어 동시에 처리하면 작업의 응답 시간이 줄어든다스..
람다란 ?익명 함수를 의미한다함수형 프로그래밍을 지원하기 위해 Java 8에서 도입되었다사용하면 코드가 간결해진다는 장점이 있다컬렉션과 Stream API를 사용할 때 매우 유용하다주로 [[함수형 인터페이스]]와 함께 사용한다왜 람다를 사용하나?코드 간결성 및 가독성 향상특히 컬렉션 요소를 처리하는 데 유용하다익명 클래스나 반복적인 코드없이 간단하게 기능을 정의할 수 있다함수형 프로그래밍 지원[[병렬 처리]] 및 스트림 API 강화람다 표현식은 스트림 API를 간결하게 작성할 수 있게 도와준다이벤트 처리 및 콜백 메커니즘 간소화비동기식 프로그래밍에서 콜백을 간단하게 정의할 수 있다함수형 인터페이스Consumerjava.util.function 패키지void accpet(T t)를 가지고 있다주어진 입력 ..
Timestamp와 LocalDateTime 타입의 차이점은 시간대 정보를 포함하는 지다. Timestamp은 UTC(협정 세계시)를 기반으로 시간대 정보를 포함한다. 이 타입은 주로 데이터베이스와 상호 작용할 때 사용한다. LocalDateTime은 Java8 이상부터 제공되는 타입으로, 이름에서도 알 수 있듯 로컬 시간 정보만을 나타내고 특정 시간대에 대한 정보는 없다. 사용 시점 및 권장 사항 데이터베이스와의 상호 작용이 중요하다면 Timestamp를 사용하는 걸 권장한다. 외국에서도 운영되는 서비스라면 시간대 정보가 중요하기 때문에 Timestamp를 사용해야 한다. Java8 이상의 환경이라면 LocalDateTime을 사용하는 것이 더 간단하고 권장된다. java.time 패키지에서 제공하는 ..
형 변환 - 변수의 자료형이 변환되는 것 - 특정 자료형의 값을 다른 자료형의 변수에 대입 가능 - prmitive는 primitive끼리, reference는 reference끼리 형 변환 - boolean은 변환이 불가 묵시적 형 변환 - Implicit Type Casting (자동 형 변환) - 더 큰 크기의 타입에 집어 넣으면 자동으로 더 큰 타입으로 형변환이 이루어진다. int num1 = 100; double num2 = num1; //실수형이 정수형보다 더 크기 때문에 자동으로 형 변환된다. 명시적 형 변환 - 더 작은 크기의 타입으로 집어 넣으면 명시적으로 타입을 지정해줘야 한다. - 이런 경우에는 값 손실이 생길 수 있다. double num1 = 2.99; int num2 = (int..
프로그래밍 언어인 자바는 객체 지향 언어이다. 객체 지향 언어에는 여러 가지 특징이 있다. 오늘은 그중에서 상속이라는 개념을 알아보자. 처음 나는 상속이라는 단어를 들었을 때 부모의 재산을 받는 걸 떠올렸다. 자바의 상속이라는 개념도 똑같다. 우선 상속의 개념을 살펴보면 기존의 클래스를 재사용해 새로운 클래스를 작성하는 거라고 한다. 사용하는 이유는 적은 양의 코드로 새로운 클래스를 작성이 가능하고 코드를 공통적으로 관리할 수 있다. 공통적으로 관리되는 코드는 추가, 변경에 용이하다. 그렇게 되면 재사용성이 올라가고 유지 보수하기도 좀 더 쉬워진다. 결론적으로 프로그램의 생산성이 높아지는 효고가 생긴다. 자바에서 상속을 사용하는 방법은 쉽다. 클래스 이름 옆에 extends를 붙여주고 상속받고 싶은 클래..
https://doingsomething.tistory.com/17 Spring Framework 3 - Spring MVC 구조와 처리과정 만들어진 스프링 프로젝트를 보기에 앞서, Spring MVC가 어떻게 요청을 처리하는지 알아본다. 대략적인 처리과정은 위 이미지와 같다. 대략적인 설명은 아래와 같습니다. 자세한 설명은 앞으로 올 doingsomething.tistory.com 이전 글에서 큰 틀에서 Spring MVC 처리과정을 살펴보았습니다. 이번 글에서는 이러한 처리과정이 어떤 방식을 통해 이루어지는지 프로젝트에 있는 파일들을 통해서 알아보겠습니다. 1. 가장 우선적으로 요청이 들어오면 web.xml로 요청이 전달됩니다. 그리고 web.xml에서 DispatcherServlet이 그 요청을 처..
삼공비
'TIL/Java & Spring Boot' 카테고리의 글 목록