
소프트웨어 빌드 자동화 및 프로젝트 관리를 위한 오픈 소스 빌드 도구작성한 Java 소스코드를 자동으로 BuildGradle을 사용시 간편하게 .java 파일을 .jar파일로 변경. build.gradlebuild.gradle은 Gradle 기반의 빌드 스크립트groo

Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나데이터와 비즈니스 로직을 담당.DB와 연동하여 데이터를 저장하고 불러오는 작업을 함.사용자의 UI를 담당.모델과 뷰사이의 상호작용을 조정하고 제어유저의 입력을 받아 모델에 전달, 결과를 바

최근 경향은 서버가 직접 뷰를 구형하여 반환하기보단 특정 정보만 반환하는것을 선호. (느슨한결합을 지향)그 중 JSON 형태로 반환하는것을 선호.JSON 은 JS형태로도 읽어지기에 악성 공격에 주의해야함.JSON형태는 JAVA가 지원하지않음 따로 방법이 필요함JSON형

DTO(Data Transfer Object)는 데이터 전송 및 이동을 위해 생성되는 객체를 의미Client가 보내는 데이터를 객체로처리 할때 사용서버 계층간의 이동에서도 사용됌.DB와의 소통 담당 JAVA클래스를 그대로 반환하는게 아닌 DTO로 변환 후 반환.Requ

객체지향 관점의 Spring 프로그래밍 기법.작은 구조의 프로그램이면 Controller Class 에서만 구현을해도 문제가 없지만, 확장됄수록 많은 문제가 발생.Controller, Service, Repository 3개로 분리Client의 요청을 받음.요청에 대한

기존의 JDBC 는 SQL 의존적이라 변경에 취약하고 많은 수의 Step 이 존재함.수정사항이 추가됨으로 코드변경성이 매우 높음SQL 작업을 줄여주기 위해서 등장. 객체 : DB 의 관계를 매핑해줌.JPA 는 JavaORM 의 대표적인 표준명세객체를 통해 간접적으로 D

SpringBoot 환경에서는 EntityManagerFactory와 EntityManager를 자동으로 생성@Transactional 을 메소드나 클래스등에 추가하면 트랜잭션 개념을 적용 가능.save 메서드는 @Transactional 어노테이션을 지니기에 rea

일반적으로는 @Component를 사용하여 Bean을 자동으로 등록규모가 커질수록 개발자의 관리가 힘들어짐. 또한 생산성 증대기술지원 Bean : 기술적 문제 혹은 공통 관심사 처리의 경우 객체들을 수동 등록함 비즈니스 로직보다 수가적고 문제 발생시 위치파악이 명확함.

USER Entity@Enumerated(value = EnumType.STRING) : Enum 차입을 DB에 저장하기위한 어노테이션.회원 등록시 '비밀번호' 등의 민감한 사항은 DB에 등록이 법으로 금지되어져있음.예시탈취당하더라도 복호화가 불가능한 '단방향' 암호

데이터의 대한 유효성검사를 어노테이션을 통해 쉽게 해결이 가능.build.gradleProductRequestDto예외가 발생하면 BindingResult 객체에 오류에 대한 정보가 담김BindingResult 객체를 파라미터로 통해 받아와서 오류예외처리 가능.bind

Spring Server 환경에서 인증 및 인가를 구현해둔 프레임워크Spring Security 는 필터환경에서 적용되기에 필터와의 충돌 발생가능성이 존재.CSRF (사이트 간 요청 위조 / Cross-site request forgery) : 공격자가 인증된 브라우저

개발을 진행하다보면 표준 라이브러리 만으로는 기능구현이 힘든 점이 존재.Ex) 회원가입중 주소검색기능이 필요시 다른 서버의 주소검색 API를 사용한다면 구현이 쉬워짐.Spring에서는 서버에서 다른 서버로 간편하게 요청할 수 있도록 RestTemplate 기능을 제공R

DB에서 정보를 가진 Table들은 연관관계를 지님.두 테이블에서 주문을 받을때 저장이 되야하는 곳은 어디인가?고객 테이블고객과 음식은 1:N 의 관계를 가진다.해당 형태로 저장이 된다면 불필요한 중복Row가 발생.음식 테이블음식과 고객은 1:N의 관계를 가짐.위에서와

@ManyToMany 를 통해 관계를 표현.N:M 관계를 해결하기위해선 필요한 정보를 가지는 중간 테이블을 생성하여 사용함.@JoinTable 을 통해 중간테이블을 정의 및 생성joinColumns = @JoinColumn(name = "food_id") , inver

소셜 로그인 배경 Web Site 들이 점차 늘어나면서 사용자가 모든 사이트에서 회원가입과정을 거치는것에 대한 부담이 늘어나고 보안을위해 사이트 별로 다른 이메일, 비밀번호가 필요. Web Site 또한 회원들의 개인정보를 해커들로부터 보호해야하는 역할이 부담스러울 수
테스트코트 버그발견시기가 늦어질수록 비용이 기하급수적으로 증가. 테스트코드를 작성하는 비용과 작성하지 않았을때의 비용차이를 알아야함. 일반적으로 JUnit5 사용 단위테스트 문제를 최대한 잘라내어 작은 단위의 동작들이 제대로 수행되어지는지 검사하는 테스트 기법 작성

단위테스트의 경우 하나의 모듈 혹은 클래스의 대한 세세한 검증이 가능하지만 모듈간의 상호작용에서의 테스트는 불가능하다.이를 테스트하는 방식을 통합테스트 라고 한다.@SpringBootTest 어노테이션을 사용하여 테스트 한다.@TestInstance(TestInstan

현재 기준코드에서 요구사항으로 서버 이용시간의 TOP5 회원을 선출해달라는 요구사항이 들어왔을때 어떻게 구현할 것인가?해당 API의 사용시간 (메소드 시작, 끝 시간)을 구하여서 DB상으로 저장하면 기능의 구현이 가능은하다.하지만 이 기능이 모든 핵심기능에 전부 필요하

Client와 Server 모두가 예외에 대해 공통적으로 알고 있지 못하다면, 서비스환경에서의 예외를 제대로 대응할 수 가 없음.예외처리 역시 각각의 관심사 분리를 통해 효율적으로 처리가 가능.API 는 응답 헤더에 HTTPStatus Code 를 함께 보냄.Sprin