Spring(36)
-
Spring[Info] - Spring Triangle_PSA
🤔 PSA? (Portable Service Abstraction) 호환성있는 서비스 추상화 잘 만든 인터페이스 Tomcat, Netty dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' } spring-boot-starter-web을 주입하면 tomcat으로 실행 dependencies { implementation 'org.springframework.boot:spring-boot-starter-webflux' } spring-boot-starter-webflux을 주입하면 netty로 실행 이처럼 의존성만 변경하면 코드에 변경없이 기능을 수정할 수 있는 특성 ex) Spring Transaction, Sp..
2021.07.02 -
Spring[Info] - Maven VS Gradle
🤔 빌드 관리 도구? 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램 초기의 java 빌드도구로 Ant를 많이 사용하였으나 최근 많은 빌드도구들이 생겨 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다. Maven 장점 및 특징 자바 전용 프로젝트 라이프사이클 관리 목적 빌드 도구이며 Ant 불편함을 해결하고자 만들었다. pom.xml을 이용한 정형화된 빌드 시스템(필요한 라이브러리를 정의하면 알아서 다운받아줌) 간단한 설정을 통한 배포 관리가 가능 하다. Gradle 장점 및 특징 Maven 과 Ant 의 장점을 조합하여 만든 빌드 도구이다. build.gradle을 이용한 정형화된 빌드 시스템이다. 멀티 프로젝트에 용이하다. Gradle은 프로젝트의 어느 부분이 업데이트..
2021.07.02 -
Spring[Info] - JPA Annotations
@Entity 테이블과 일대일로 매칭되는 객체 단위이며 Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미합니다. @Table 데이터베이스상의 테이블명을 정해줄 수 있다. Entity 클래스의 이름 그대로 테이블이 생성 되기 때문에 관례적으로 변경해 줄 때 사용한다. @Entity @Table(name = "SCHOOL") public class School { ... } @Column 데이터베이스의 테이블에 있는 컬럼과 동일하게 1:1로 매칭되기 때문에 Entity 클래스 안에 내부변수로 정의 테이블에 a,b,c 컬럼이 있다면 각각 3개의 @Column 어노테이션을 작성하게 됩니다. 다만 실제 a,b,c,d 총 4개의 칼럼이 있더라도 a,b,c 컬럼만 Entity 클래스에 작성해도 ..
2021.07.02 -
Spring[Info] - 빈(Bean)
🤔 빈 (Bean)? IoC에서 관리되는 일반적인 객체 다음 객체는 Bean이 아니다 OwnerController ownerController = new OwnerController(); 다음 객체는 applicationContext에서 관리하는 객체를 가져왔으므로 Bean이다. OwnerController bean = applicationContext.getBean(OwnerController.class); 🤔 Bean 만드는 방법? 2가지 방법 Component Scanning 직접 등록하기 Component Scanning @Controller라는 Annotation은 사실 @Component Annotation을 사용하도록 구현되어 있다. Annotation 프로세서 중 IoC가 사용하는 여러가지..
2021.07.02 -
Spring[Info] - RESTful
🤔 REST (Representational State Transfer) 자원의 상태 전달 네트워크 아키텍처 🤔 REST 조건 1. Client, Server 클라이언트와 서버가 서로 독립적으로분리 되어 있어야 한다. 2. Stateless 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다. 3. Cache 클라이언트는 서버의 응답을 Cache(임시저장) 할 수 있어야 한다. 클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 하며, 이를 통해서 서버의 부하를 낮춤 4. 계층화 (Layered System) 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy등 다양한 계층 형태로 구성 가능해야 하고 이를 확장 할 수 있어야 한다. 5. 인터페이스 일관성 인터페이스의 일관성을 지키고, ..
2021.07.02 -
Spring[Info] - Validation
🤔 Validation? 일반적인 애플리케이션에서 데이터 유효성 검사 로직은 다음과 같은 문제를 가지고 있다. 애플리케이션 전체에 분산되어 있다. 코드 중복이 심하다. 비즈니스 로직에 섞여있어 검사 로직 추척이 어렵고 애플리케이션이 복잡해진다. 위 경우를 해결하기 위한 Bean Validation 이라는 데이터 유효성 검사 프레임워크를 제공하고 있다. Validation Anntation Validation 사용법 dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.5.1' } build.gradle 추가 @Data public class Input..
2021.07.02