Spring공부 (29) 썸네일형 리스트형 스프링 부트 구조 살펴보기 프레젠테이션 계층 HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할을 한다. 컨트롤러가 바로 프젠테이션 계층의 역할을 한다. 컨트롤러는 스프링 부트 내에 여러 개가 있을 수 있다. 비즈니스 계층모든 비즈니스 로직을 처리한다. 비즈니스 로직이란 서비스를 만들기 위한 로직을 말한다. 쉽게 말해 웹 사이트에서 벌어지는 모든 작업, 이를테면 주문 서비스라고 한다면 주문개수, 가격 등의 데이터를 처리하기 위한 로직, 주문 처리를 하다가 발생하는 예외 처리 로직, 주문을 받거나 취소하는 것 같이 프로세스를 구현하기 위한 로직 등을 생각하면 된다. 서비스가 비즈니스 계층의 역할을 한다. 퍼시스턴트 계층 모든 데이터 관련 로직을 처리한다. 이과정에서 데이터베이스에 접근하는 DAO 객체를 사용할수도 있습니.. 스프링 부트 스프링과 스프링 부트스프링은 장점이 많은 개발 도구이지만 설정이 매우 복잡하다는 단점이 있다. 그래서 스프링을 개발팀에서 이란 단점을 인식하고 단점을 보완하고자 스프링 부트를 출시했다. 스프링 부트는 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구 이다. 빠르게 스프링 프로젝트를 설정할 수 있고 의존성 세트라고 불리는 스타터를 사용해 간편하게 의존성을 사용하거나 관리 할 수 있다. 스프링 부트는 개발자가 조금 더 비즈니스 로직 개발에만 집중할 수 있도록 만들어주는 도구이다. 참고로 스프링 부트와 스프링이 다른 도구라고 생각하는 사람들이 있는데. 스프링 부트는 스프링에 속한 도구이다. 단, 스프링과 스프링 부트는 개발할 때의 몇가지 차이점이 존재 한다 스프링스프링 부트목적 엔터프라이즈.. 자바 백엔드 개발자가 알아주면 좋은 지식. 클라이언트란?클라이언트는 서버로 요청하는 프로그램을 모두 일컬어 말한다. 사용하는 프로그램중 웹 브라우저가 바로 대표 적인 클라이언트 중 하나이다. 웹브라우저는 주소를 입력하고 엔터를 눌러 서버에 정보를 요청하면 서버는 그 주소에 맞는 화면으로 응답한다. 서버란?서버란 클라이언트의 요청을 받아 처리하는 주체다. 클라이언트가 데이터를 요청했다면 데이터를, 단지 서버 내에서 처리만 해달라는 요청을 했다면 해당 요청만 처리할 수도 있다.흔히 우릭다 웹 브라우저에 주소를 입력하는건 '새로운 화면을 그리기 위한 데이터를 달라'는 데이터 요청에 해당한다. 데이터베이스란?데이터베이스는 여러사람이 데이터를 한 군데에 모안놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소다. 흔히 데이터베이스를 말할 때 MyS.. @Transactional @Transactional은 자바에서 스프링 프레임워크에서 제공하는 어노테이션 중 하나입니다. 이 어노테이션은 메서드 또는 클래스에 적용될 수 있습니다. 이 어노테이션을 사용하면 해당 메서드나 클래스의 실행이 트랜잭션 내에서 처리됨을 나타냅니다. @Transactional 어노테이션을 사용하면 스프링이 트랜잭션을 관리하고, 설정된 트랜잭션 속성에 따라 메서드가 실행됩니다. 이를 통해 개발자는 트랜잭션 처리를 명시적으로 관리할 필요가 없으며, 트랜잭션의 관리와 제어를 스프링에 위임할 수 있습니다. 일반적으로 @Transactional 어노테이션은 다음과 같은 속성을 가질 수 있습니다: readOnly: 트랜잭션이 읽기 전용인지 여부를 나타냅니다. 읽기 전용 트랜잭션은 데이터베이스에 쓰기 작업이 없음을 나타.. DTO의 필요성 데이터 전송의 표준화: DTO는 데이터 전송을 위한 표준화된 객체입니다. 이를 사용하면 데이터를 일관되게 전송할 수 있으며, 클라이언트와 서버 간의 통신을 단순화할 수 있습니다. 불필요한 데이터 제거: DTO를 사용하면 필요한 데이터만을 전송할 수 있습니다. 이는 네트워크 대역폭을 절약하고, 불필요한 데이터 처리를 방지하여 성능을 향상시킵니다. 객체 지향적 접근: DTO는 객체 지향적인 설계를 장려합니다. 데이터를 객체로 캡슐화함으로써 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 버전 관리와 호환성: DTO를 사용하면 API의 버전 관리와 호환성을 유지하기 쉽습니다. 새로운 필드를 추가하거나 기존 필드를 수정할 때에도 DTO를 업데이트하여 이전 버전과의 호환성을 보장할 수 있습니다. 보안 강화: .. 회원 가입 API [ ] 닉네임, 비밀번호, 비밀번호 확인을 request에서 전달받기 [ ] 닉네임은 최소 3자 이상, 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성하기 [ ] 비밀번호는 최소 4자 이상이며, 닉네임과 같은 값이 포함된 경우 회원가입에 실패로 만들기 [ ] 비밀번호 확인은 비밀번호와 정확하게 일치하기 [ ] 데이터베이스에 존재하는 닉네임을 입력한 채 회원가입 버튼을 누른 경우 "중복된 닉네임입니다." 라는 에러메세지를 response에 포함하기 UserController import com.example.amazing.common.CommonCode; import com.example.amazing.request.SignupRequestDTO; import com.example.amazing... IoC(제어의 역전), DI(의존성 주입) IoC(제어의 역전)와 DI(의존성 주입)는 소프트웨어 개발에서 객체 지향 프로그래밍과 관련된 개념으로, 코드의 유연성, 확장성, 유지보수성을 향상시키는 데 중요한 역할을 합니다. IoC(제어의 역전): IoC는 제어의 흐름을 바꾸는 것을 의미합니다. 기존에는 개발자가 코드의 제어 흐름을 직접 제어하는 방식이었는데, IoC에서는 그 제어가 프레임워크나 컨테이너로부터 역전되어 객체의 생명 주기와 의존성 관리 등이 자동으로 이루어집니다. 이는 개발자가 작성한 코드가 실행 중에 프레임워크에 의해 제어되는 것을 의미하며, 주로 "제어의 역전(Inversion of Control)"이라고 불립니다. DI(의존성 주입): DI는 객체 간의 의존성을 외부에서 주입하는 것을 의미합니다. 객체가 필요로 하는 의존성(다른.. 3 Layer Architecture 3계층 아키텍처(3 Layer Architecture)는 소프트웨어 개발에서 일반적으로 사용되는 아키텍처 디자인 패턴으로, 소프트웨어 응용 프로그램을 세 개의 상호 연결된 계층으로 나눕니다. 각 계층은 특정한 책임을 가지고 있습니다. 이 세 개의 계층은 다음과 같습니다: 프레젠테이션 계층 (사용자 인터페이스): 이것은 사용자와 직접 상호작용하는 최상위 계층입니다. 사용자에게 정보를 제시하고 그들의 입력을 수신하는 것이 책임입니다. 주로 웹 페이지, 양식 및 그래픽 요소와 같은 사용자 인터페이스 구성 요소를 포함합니다. 응용 프로그램의 외관과 느낌과 관련이 있습니다. 비즈니스 로직 계층 (응용 계층): 이 계층에는 응용 프로그램의 핵심 기능과 비즈니스 규칙이 포함되어 있습니다. 사용자 인터페이스에서 수신한.. 이전 1 2 3 4 다음