Spring Boot로 Bean을 생성시 Bean이 생성되지 않고 다음과 비슷 예외메세지가 본 적이 있을 것이다. NoSuchBeanDefinitionException: No qualifying bean of type 'com.kjh.component.StudyComponent' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} StudyComponent 타입의 Bean을 찾지못했다는 메세지인데 왜 이런 메세지가 나오는지 예제코드와 함꼐 확인해보자. ..
GSON이란 JSON포맷으로 되있는 문자열 데이터를 JAVA의 오브젝트로 직렬화 및 역직렬화 해주는 라이브러리이다. 예제코드와 함께 사용법을 알아보자. 라이브러리 다운 JSON https://mvnrepository.com/artifact/org.json/json/20201115 GSON https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.6 두개의 라이브러리를 다운받고 프로젝트 마우스 우클릭 > Build Path > Configure Build Path > Libraries 탭 > Add External JARs 클릭후 다운받은 jar파일을 추가한다. JAVA Class 생성 public class Student { private Str..
Spring으로 Rest Api를 개발할때 클라이언트와 데이터를 JSON으로 주고받고 하는데 이때 사용되는 어노테이션중 하나가 @RequestBody이다. 클라이언트측에서 요청데이터를 body에 담고 content-type을 application/json으로 설정 해줘야 동작된다. 이제 그 방식을 알아보자 Request DTO 생성 및 스크립트 파일작성 클라이언트에서 POST 방식으로 요청데이터를 JSON으로 직렬화 한 후 content-Type을 application/json지정하여 요청한다. 서버에서는 해당 데이터를 받아드릴 RequestDTO 객체를 생성한다. Controller 작성 Post요청을 받는 메서드를 작성한뒤 매개변수에 RequestDTO 객체를 인자로 받는다. 이때 @RequestBo..
최근에 이 글을 작성하면서 Spring 애플리케이션을 jar로 실행시 Java RunTime 시점에 System 변수를 주입하는법에 대해 정리를 해보았는데 이번엔 jar가 아닌 war로 배포할때 Java System변수를 추가하는법에 대해 알아보자. IDE에서 구동 Eclipse나 STS에서 구동할때 Server 탭 > Tomcat Server 클릭 > Open launch configuration 클릭 > Arguments 탭 클릭하게되면 VM arguments란에 -Dname=value를 작성해주면 된다. Tomcat을 구동하게되면 Console에 해당 시스템변수가 주입된걸 볼 수 있으며 System.getProperty(key) 메서드로 확인해보니 정상적으로 출력되었다. Tomcat Director..
이번장에는 Spring Boot 애플리케이션을 jar가 아닌 war로 배포하는법에 대해 알아보자. Spring Boot는 Embedded Tomcat이 내장되어 있어 jar로 배포가 가능하지만 프로젝트 환경상 외부 Tomcat을 이용해 배포해야할 경우가 있다. 외부 Tomcat을 이용하여 Tomcat Probe Manager로 배포를 해볼 예정인데 Tomcat Probe Manager란 Tomcat의 상태를 모니터링할 수 있는건데 현재 몇개의 쓰레드가 가동중이며 JVM 메모리를 얼마나 사용하는지에 대한 정보를 볼 수 있는데 자세한건 아래에서 설명하겠다. SpringBootServletInitializer 클래스 상속 먼저 SpringBootServletInitializer 라는 추상클래스를 상속받는다. ..
저번글에서 Spring Boot로 Configuration Properties 클래스를 만들어보았는데 이때 .properties 파일에서는 한글이 깨진현상이 나온적이 있는데 왜 발생이 되었고 어떻게 해결을 했는지 정리해보고자 한다. 한글깨짐현상 application.properties에 한글데이터를 넣었다. 테스트를 돌려보니 한글데이터가 깨져있는걸 확인할 수 있었다. 이 문제를 해결하기위해 @PropertySource라는 어노테이션을 이용해 encoding을 설정해줄수 있는데 한번적용해보았다. @PropertySource 어노테이션 추가 해당 어노테이션을 추가해도 한글은 계속 깨졌다. 아마 어딘가에 encoding방식을 ISO_8859_1로 세팅하는곳이 있는것같다. 원인 Spring Boot에서 Prop..
Spring으로 개발을 할때 properties나 yml 등 설정파일에 데이터를 입력하고 그 데이터를 JAVA객체와 매핑하여 사용할 때가 발생하곤 한다. 이번장에는 Spring Boot에서 기본적으로 제공해주는 Properties 클래스말고 직접 Properties 클래스를 만들어보자. 위에서 언급한 Spring Boot에서 기본적으로 제공해주는 Properties 클래스에 대해 간략히 설명하자면 기존 Spring Legacy로 개발환경을 세팅할때 개발자는 DB Connection을 하기위해 DataSource Bean 설정을 일일이 하나하나 다 잡아줘야했지만 Spring Boot에서는 이러한 기능들을 자동으로 설정해주며 각 설정들에 대해 Properties 클래스를 제공해준다. 내장 Tomcat, My..
JAVA로 개발하다보면 제일많이 쓰이는 클래스가 String 클래스인것같다. 이번장에서는 String에 대해 알아보자 String이란? String 클래스는 문자열을 다루는 클래스이며 immutable 하다는 특징이 있다. immutable은 한국어로 해석하면 불변이라는 단어인데 String 객체에 값이 초기에 할당되면 그 값은 변경되지 않는다. String 객체 생성방법 String 객체는 생성하기위해 2가지방식이 있다. 리터럴을 이용한 방법과 new연산자를 이용한 방법이 있다. 리터털로 생성하게되면 String 객체는 String Constant Pool이란 공간에 저장이되며 new연산자를 이용해 생성하면 Heap영역에 생성된다. 그리고 각 변수 a1, a2는 Stack 메모리에 올라가며 String..