본문 바로가기

JAVA

(133)
스프링 부트 기본-#2 자동설정 자동설정은 스프링 부트의 장점이며 매우 중요한 역할. 스프링 부트 자동 설정은 web, h2, jdbc 등 여러개의 자동설정을 제공한다. h2 의존성이 클래스 경로에 존재한다면 자동으로 인메모리 데이터베이스에 접근한다. 자동환경설정 어노테이션 기존의 스프링 프레임워크를 사용했다면 의존성을 일일이 bean으로 설정했어야 한다. 스프링 부트는 관련 의존성을 스타터라는 묶음으로 제공하며 수동 설정을 지양한다. @SpringBootApplication @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @Compon..
스프링 부트 기본-#1 스프링 부트 특징 임베디드 톰캣, 제티, 언더토우를 사용하여 독립 실행이 가능한 스프링 애플리케이션 개발 통합 스타터를 제공하여 메이븐/그레이들 구성 간소화 스타터를 통한 자동화된 스프링 설정 제공 JAR를 사용하여 자바 옵션마으로도 배포 가능 애플리케이션의 모니터링과 관리를 위한 스프링 액츄에이터 제공 장점 각각의 의존성 버전을 올리는 것이 수월 (스프링 부트의 버전이 올라갈때마다 각 버전의 호환성에 대한 충분한 테스트를 거치고 릴리스 되기 때문) 간단한 어노테이션 설정이나 프로퍼티 설정으로 세부적인 설정 없이 원하는 기능을 빠르게 적용 별도의 외장 톰캣을 설치할 필요가 없으며 톰캣버전도 더욱 편리하게 관리 단점 설정을 개인화(커스터마이징)하면 버전을 올릴때 기존 스프링 프레임워크를 사용하는 것과 동일..
Spring MyBatis사용 및 설정 Mybatis Mybatis 의존설정 기존 스프링 기반에서는 Mybatis.jar, Mybatis-Spring.jar 사용. 스프링 부트 기반에서는 mybatis-spring-boot-starter를 사용. compile ('org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3') implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3' Mybatis에서는 쿼리 매핑 구문을 실행하기 위해 sqlSession 객체를 사용 sqlSession 객체를 생성하기 위해 SqlSessionFactory를 사용. 스프링과 같이 사용할때는 SqlSessionTemplate를 사용. why? 스..
IoC 컨테이너 계층 구조 - 토비의 스프링 IoC 컨테이너 계층 구조 빈을 담아둘 IoC 컨테이너는 애플리케이션마다 하나씩이면 충분하다. 그러나 한 개 이상의 IoC 컨테이너를 만들어두고 사용해야 할 경우가 있다. 부모 컨테이너를 이용한 계층구조 효과 루트 애플리케이션 컨텍스트 ^ ^ | | 애플리케이션 컨텍스트 A1 애플리케이션 컨텍스트 A2 ^ | 애플리케이션 컨텍스트 B1계층 구조 안의 모든 컨텍스트는 각자 독립적인 설정정보를 이용해 빈 오브젝트를 만들고 관리한다. 각자 독립적으로 자신이 관리하는 빈을 갖고 있긴 하지만 DI를 위해 빈을 찾을때 부모 애플리케이션 컨텍스트의 빈까지 모두 검색한다. 자신이 관리하는 빈 중에서 찾고 없으면 부모 컨텍스트(A1)에 빈 찾기 요청을 한다. 없으면 그 위의 부모 컨텍스트(루트)에게 다시 요청한다. 그래..
IoC 컨테이너와 DI - 토비의 스프링 IoC 컨테이너와 DI 스프링 애플리케이션에서는 오브젝트의 생성과 관계설정, 사용 제거 등의 작업을 애플리케이션 코드 대신 독립된 컨테이너가 담당한다. 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 스프링 컨테이너 = IoC 컨테이너 IoC를 담당하는 컨테이너를 빈 팩토리 또는 애플리케이션 컨텍스트라고 부른다. 스프링의 IoC 컨테이너는 일반적으로 애플리케이션 컨텍스트를 말한다. BeanFactory 인터페이스 ApplicatioinContext 인터페이스 빈 컨테이너 StaticApplicationContext ac = new StaticApplicationContext(); 여기에 IoC 컨테이너로서 동작하려면? 클래스와 설정메타정보가 필요하다. IoC 컨테이너의..
도메인 모델링 3가지 개념 도메인 모델링 비즈니스 사용자의 편의성을 어떻게 개선할수 있을까? '어떤 조건이 주어졌을때(when), 이런작업을 한다(then)' 같은 간단한 조합을 규칙으로 지정할수 있게 한다. 이 도메인에는 세가지 개념이 있다. 조건: 어떤 팩트에 적용할 조건(참이나 거짓으로 평가됨) 액션: 실행할 연산이나 코드 집합 규칙: 조건과 액션을 합친것, 조건이 참일때만 액션을 실행한다. 조건 @FunctionalInterface public interface Condition { boolean evaluate(Facts facts); } 규칙 @FunctionalInterface public inference Rule { void perform(Facts facts); } 규칙의 개념 모델링 public class De..
메이븐 멀티 프로젝트 구성 예제에서 참고한 메이븐 멀티 프로젝트 구성 taco-cloud-parent pom.xml 4.0.0 sia taco-cloud-parent 0.0.7-SNAPSHOT pom org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE 1.8 1.8 ${project.version} tacos tacocloud-api tacocloud-data tacocloud-domain tacocloud-restclient tacocloud-security tacocloud-web tacocloud-ui 모듈 구성 tacos pom.xml 4.0.0 taco-cloud jar taco-cloud Taco Cloud Example sia taco-cloud-par..
Spring Data JPA 사용 및 설정 Spring Data JPA 설정 org.springframework.boot spring-boot-starter-data-jpa 데이터 저장소로 h2 사용 com.h2database h2 1.4.200 test JDBC를 지원하고 라이브러리 추가만으로 사용 가능하므로 로컬에서 개발시에 많이 쓰인다. Spring Data JPA의 Repository 구조 스프링을 사용할때 자바 클래스들은 ApplicationContext를 사용하여 빈으로 등록하고 콘텍스트를 통해 제어하는 것처럼 ORM을 사용할때는 엔티티 매니저로 영속성 콘텍스트를 제어해서 자바 객체와 데이터베이스 간의 데이터 통신 및 동기화 제어를 수행한다. 엔티티 매니저의 기능을 보다 쉽게 사용할수 있도록 Repository 인터페이스를 제공하고 R..