본문 바로가기

Spring

(43)
Spring boot Bean 생성 순서 정하는 방법, 생성되지 않은 Bean을 주입받으려고 하다가 실패했을 때 해결 방법, IoC 컨테이너를 공부해야하는 이유.. (※생명 주기 아님) Spring boot에서 bean 등록 순서를 결정하는 방법 스프링/스프링부트에서 bean을 등록하는 방법은 여러가지가 있다.스프링부트에서는 Bean을 등록할 때 자바코드(Annotation)로 등록하는 것을 권장한다.따라서 스프링 부트를 사용하는 개발자들은 @Component, @Service, @Controller, @Repository, @Bean, @Configuration 등으로 Bean들을 등록하고 주입받아 사용하는게 일반적이다.그런데 프로그램 개발중에 아무 생각없이 여러 개의 Bean들을 등록해놓고 어떤 Bean에서 @Autowired로 자연스럽게 주입받아서 '사용'하려다가 에러를 만났다.바로 Bean에 '아직' 등록되지 않은 Bean을 클래스에서 사용하려고 했기 때문이다.무슨 얘기인지 Sp..
스프링 부트 애플리케이션 더블 클릭으로 실행하는 방법, Fully Executable Jar (JSmooth로 .exe파일은 이제 그만!) Running Spring boot Applications by using double click 제목은 거창해보이나 아주 간단한 설정만으로 스프링 부트 애플리케이션을 "완전히 독립적으로 실행" 할 수 있다.기존에는 빌드를 통해서 .jar 파일을 만들고 명령 프롬프트 창에서 "java -jar XXXXX.jar" 이런 식으로 명령어를 작성해서 실행했다.지금도 특별한 불만이나 요구사항이 없으면 그대로 사용하는 것이 좋다.그런데 가끔은 스프링 애플리케이션을 더블 클릭만으로 실행해야할 때가 있다.특히 소프트웨어를 제공할 때, 사용자는 개발자가 아니기 때문에 명령어 실행에 대해 거부감이 들 수 밖에 없다. 따라서 최대한 단순하게 실행하기를 원하는 경우에 아래와 같은 방법을 사용하는 것을 고려해볼 수 있다.Set..
스프링 부트 2.0의 default DBCP, hikariCP가 그렇게 빠르다던데? (hikariCP 저만의 성능 테스트를 해봤습니다.) HikariCP hikariCP는 스프링 부트 2.0부터 default JDBC connection pool이다. hikariCP github사이트에 가보면 엄청 빠르고, 가볍고, 신뢰할 수 있다고 설명한다.심지어 "zero-overhead"라며 엄청나게 높은 성능을 강조하고 벤치마크 결과도 보여준다.원하면 벤치마크 테스트 소스도 가져가서 직접 돌려보라고도 하는데 자세한건 모르겠고 나만의 테스트 환경을 만들어서 테스트 해보기로 했다.스프링 부트에서 hikariCP 성능 테스트 PC 사양도 중요하고 인터넷 사양도 중요하고 로컬 DB냐 원격 DB냐도 갈리고 여러 환경이 중요한 것으로 아는데 크게 생각 안하고 단순히 직접 경험해본다에 중점을 두었다.먼저 hikariCP는 스프링부트 2.0부터 default로 ..
Spring boot Actuator를 이용하여 스프링 애플리케이션 정보 모니터링 하기 (java application state/performance check) Spring boot Actuator * 스프링 부트 2.0 레퍼런스 기준으로 작성했습니다.spring boot actuator는 한 마디로 얘기하면 "스프링 부트 애플리케이션에서 제공하는 여러가지 정보를 모니터링하기 쉽게 해주는 기능"이다.그 정보가 무엇이냐면 컨텍스트 빈, 환경 설정, 자동 설정, JVM 상태 등의 것이다.여기서 필요한 정보를 얻어서 가공할 수 있고, 모니터링할 수도 있는 것이다.또한 내가 만든 어떠한 값들을 actuator를 통해서 제공할 수도 있다. (custom endpoint)아래부터는 Actuator를 사용하기 위해서 어떻게 해야하고, 어떤 정보를 볼 수 있는지 테스트해보려고한다. Actuator settings Actuator를 사용하는 법은 아주 간단하다.- maven d..
Spring boot 설정 파일 yaml 사용법 (설정 파일을 읽어서 bean으로 필요할 때 사용하는 방법) Spring boot의 설정 파일 YAML을 사용하는 방법 대부분의 애플리케이션에서 설정과 관련된 변수들은 보통 파일에다가 쓰고 읽어오는 방식으로 프로그래밍한다.외부에 설정파일을 넣을 수도 있고 내부적으로 프로젝트에 넣을 수도 있다.해당 파일들은 포맷(.properties, .ini 등)도 다양하다.스프링 부트에서도 설정에 대한 내용을 다양한 파일에 적고 읽어와 사용하는데 그 중에서 가장 적합하고 스프링 부트에서 권장하는 형식인 yaml에 대해서 간단히 설명하고 사용해본다.왜 YAML 이어야 하는가?-> 사람이 보기 편하다!1234567environments: dev: url: http://dev.example.com name: Developer Setup prod: url: http://another...
강력한 자바 오픈소스 로깅 프레임워크, logback 사용법 with example(스프링 부트에서 logback 가이드, logback-spring.xml 설정하기) Logback 소개Logback은 "자바 오픈소스 로깅 프레임워크"로 SLF4J의 구현체이자 스프링 부트의 기본 로그 객체다.log4j, log4j2, JUL(java.util.logging)과 성능을 비교했을 때 logback은 훌륭한 성능을 보여준다.그리고 결정적으로 자바 프로그램에서 로그를 사용할 때 가장 많이 사용되고 있기 때문에 알아두어야 한다.Logback을 사용하기 위해서 아래의 모듈을 가져와야 한다. (maven 사용)12345678 ch.qos.logback logback-classic 1.2.3 test Colored by Color Scripter * 스프링부트에서는 기본 로그이기 때문에 굳이 위의 dependency를 추가하지 않아도 사용가능하다.spring-boot-starter-..
스프링부트 애노테이션 정리, annotation 간단 요약 (자세한 내용은 검색해서 확인하고 용도 파악하기) 스프링/스프링부트 애노테이션(Annotation) 정리 스프링 부트와 스프링에서 사용하는 애노테이션에 대한 내용을 간략하게 정리하고 자세하게 알아볼 때는 키워드를 가지고 공부할 수 있도록 유도하는 포스트.해당 애노테이션을 사용할 때 필요한 라이브러리나 설정 방법은 따로 기술하지 않고 애노테이션 정보만 빠르게 볼 수 있도록 정리하였다.@ComponentScan- @Component와 @Service, @Repository, @Controller, @Configuration이 붙은 클래스 Bean들을 찾아서 Context에 bean등록을 해주는 AnnotationApplicationContext.xml에 이런식으로 xml에 bean을 직접등록하는 방법도 있고 위와 같이 애노테이션을 붙여서 하는 방법도 있음b..
Spring Boot 일단 따라쳐보는 일기장 앱 만들기 (Spring은 알지만 Spring boot는 처음일 때..) Spring Boot 일기장 앱 만들기 스프링 부트를 왜 쓰는가에 대한 설명은 하지 않겠다.불필요한 설정 다 재끼고 편리하고 생산성이 좋고 관리하기 좋으니까 쓰는 것이라 생각한다.개발 환경 - JDK1.8 , sts 3.9.2, 스프링부트 1.5.10 + (툴 - eclipse-oxygen)Spring Boot project 순서0. jdk 설치 및 이클립스 설치( + market place에서 sts설치)1. 프로젝트 생성프로젝트는 spring starter project로 생성한다. project명, package명을 적고, 빌드 툴로 Maven을 쓸지 gradle을 쓸지 정한다.기타로 언어를 java, kotlin, groovy로 할지 정하면 된다.패키지명 : com.apress.spring프로젝트..