
custom으로 만들었던 자동구성정보를 날리고 스프링부트에 만들어져 있는 자동 구성과 테스트로 변경한다. @JdbcTest JDBC 기반 컴포넌트만 테스트하는 JDBC 테스트를 위한 어노테이션이다. 이 어노테이션을 사용하면 auto-configuration이 비활성화 되고(@Transactional 이 포함), JDBC 테스트와 관련된 configuration만 적용된다. 기본적으로 @JdbcTest가 붙은 테스트는 트랜젝션 처리가 되고, 각 테스트가 죵로된 후 롤백을 시행한다. 또한 명시됐거나 자동 설정된 DataSource 대신 인메모리 DB를 사용하게 된다.@AutoConfigureTestDatabase를 사용하면 이런 설정을 덮어쓸 수 있다. 전체 어플리케이션 설정을 사용하면서 인메모리 DB를 사..

JDBC(Java Data Base Connectivity) RDBMS가 인식할 수 있는 sql 쏴주는 기술 API java 프로그램이 관계형 데이터 베이스의 데이터에 접근할 수 있도록 하는 미들웨어. JDBC는 표준 SQL 데이터 베이스 접근 인터페이스를 제공한다. 자바에서 DataBase 사용시 오라클, mysql, DB2등.. 각 회사에서 만든 DB를 쓸 때 종속적, 의존적이지 않게하는 기술. 각 DB 드라이버들은 자기 회사 제품 쓰게 하기 위해 java 진영에서 java.sql 규격을 만들면 사용할 수 있는 드라이버를 벤더사에서 만들고 sql문법 자체는 규격이니 sql 문자로 개발하면 어떤 DB를 쓰던지 작동 가능하다. JDBC 절차 connection -> 로그인 과정 추상화 캡슐화 Statem..

스프링 부트 애플리케이션이 처음 실행되고 난 시점에 특정한 코드나 동작을 수행해야 할 때 사용하는 객체들 ApplicationRunner, CommandLineRunner ApplicationRunner 스프링 부트 실행시 특정 Bean을 애플리케이션 실행후 실행되는 인터페이스 run메서드 하나만 있는 펑셔널 인터페이스이며 인자값으로 ApplicationArguments를 받는다 ApplicationArguments란 프로그램 실행시 명시되는 argument를 추상화된 API를 통해서 접근할 수 있는 인터페이스 환경변수 속성 우선순위 JVM에 설정한 options 값 Enviroment variables 에 설정한 값 application.properties에 설정한 값 CommandLineRunner ..

Spring innitializr로 스프링부트 프로젝트 셋업시 웹 프로젝트에서 사용할만한 기본적인 자동 구성 클래스들이 내장되어 있고 자동 구성으로 설정되어 있다. 이 수많은 클래스들이 모두 자동구성되어 등록되는게 아니라 필요하지 않은 클래스라면 조건적으로 등록하지 않게 할수도 있다. Tomcat 서블릿 컨테이너가 기본 내장되어 있는데 이는 Gradle에 dependencies 라이브러리들 확인해 보면 org.springframework.boot:spring-boot-starter-web { // Bean 존재 여부 체크 assertThat(context).hasSingleBean(MyBean.class); assertThat(context).hasSingleBean(Config1.class); }); ..

메타 애노테이션과 합성 애노테이션 Annotaion : 사전적인 의미로 주석. 자바에서 사용될 떄는 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술. 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다. JDK 1.5부터도입된 기능으로 정보를 알려주는 기능과 컴파일러에게 문법 에러 체크를 제공하기도 한다. DispatcherServlet에게 등록할 Bean을 알려주는 역할도 한다. Meta-data : 데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해주는 데이터. 메타 데이터는 데이터에 대한 데이터이다. 대량 정보 가운데 찾고있는 정보를 효율적으로 찾아내서 이용하기 위해 일적한 규칙에 따라 컨텐츠에 부여되는 데이터. Meta-Annotaion : 다른 An..

테스트 코드를 이용한 테스트 웹개발을 할 때 먼저 요구사항이 정리되고 기획서가 나오면 기획서에 따른 디자인과 화면 퍼블리싱이 들어가게 된다. 그 때 백단 개발자들은 DB정의를 하면서 서비스 로직을 구현하고 화면에서 받아오는 값을 예상하여 로직을 실행하고 받아오는 값이 정상적으로 넘어오는지 단위 테스트를 진행한다. 이 때 주로 사용하기 위한 라이브러리가 JUnit5와 AssertJ이다. https://donghyeon.dev/junit/2021/04/11/JUnit5-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C/ JUnit5 완벽 가이드 시작하기전 donghyeon.dev https://insight-bgh.tistory.com/507 Junit5 기본 사용법 정리 ..

스프링 컨테이너 사용 단일인입점인 frontController에서 작업을 위임하는 일을 Spring Container에 있는 Bean에 위임한다. frontController에서 Bean을 직접 생성하는 것이 아닌 Spring Container에 등록되어 관리중인 Bean을 참조하여 사용한다. package tobyspring.helloboot; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; impo..

@SpringBootApplication 어노테이션과 SpringApplication.run(HellobootApplication.class, args); 는 어떻게 동작 되길래 스프링이 작동되는 걸까? 어떻게 만들어진건지 차근차근 따라가 보자 서블릿 컨테이너 띄우기 package tobyspring.helloboot; public class HellobootApplication { public static void main(String[] args) { } } 일단 스프링을 실행시켜줬던 어노테이션과 메인메서드 블록의 내용을 지우고 시작한다. 스프링 부트 설치시 내장형 WAS API 들도 같이 설치가 된다. Tomcat, Jetty, Netty, Undertow https://gofnrk.tistory...

개발환경 준비 JDK 8, 11, 17 설치 무료 라이센스인 Oracle OpenJDK https://jdk.java.net/java-se-ri/17 Java Platform, Standard Edition 17 Reference Implementations Java Platform, Standard Edition 17 Reference Implementations The official Reference Implementation for Java SE 17 (JSR 392) is based solely upon open-source code available from the JDK 17 Project in the OpenJDK Community. The binaries are available unde..
스프링이란 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다. 자바의 웹 기술인 서블릿을 사용하기 위해서는 자바 기반의 다양한 학습이 필요한데 웹앱을 만들 때 주로 필요로 하는 기능들을 모듈화하고 라이브러리로 제공하여 고급 개발자가 아니어도 개발 가능하게 만들었다. 자바의 깊은 이해도가 없어도 스프링의 사용법을 알면 개발할 수 있게 만든 프레임워크 스프링부트는 스프링 프레임를 기반으로한 실무 환경에 사용 가능한 수준의 독립 실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 도구 스프링 개발을 도와주는 다양한 도구의 모음이자 스프링 자체를 확장한 프레임워크 유용한 라이브러리 스프링은 컨피거레이션 잡기까지 고민을 많이 했지만 부트는 그런 고민을 줄여준다. 부트가 사용하는 부트 버..