Spring/Spring[Info](19)
-
Spring[Info] - Spring Triangle_IoC
🤔 Inversion of Control? (제어의 역전) 사용은 하지만 만들진 않음 누군가 밖에서 만들어서 줄 수 있도록 생성자를 통해 받아옴 💻 IoC Template // Controller의 생성자는 repo를 주입해줘야 한다. // 생성자로 강제하기 때문에 repo 객체는 무조건 사용할 수 있다. class OwnerController { private OwnerRepository repo; public OwnerController(OwnerRepository repo) { this.repo = repo; } } class OwnerControllerTest { @Test public void create() { OwnerRepository repo = new OwnerRepository(); ..
2021.07.02 -
Spring[Info] - Spring Triangle_AOP
🤔 AOP?(Aspect Oriented Programming) 관점 지향 프로그래밍 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것 주요 개념 Aspect 여러 곳에서 쓰이는 코드 (공통 부분)을 모듈화한 것 Target Aspect 가 적용되는 곳 Advice Aspect 에서 실질적인 기능에 대한 구현체 Joint point Advice가 Target에 적용되는 시점 메서드 진입할 때, 생성자 호출할 때, 필드에서 값을 꺼낼 때 등등 Point cut Joint point의 상세 스팩을 정의한 것 AOP 구현체 AspectJ 스플링 AOP AOP 적용 방법 컴파일 (AspectJ) 로드 타임 (AspectJ) 런타임 (스프링 AOP) ..
2021.07.02 -
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