-
6. 스프링부트 퀵 스타트IT 서적/스프링부트 퀵 스타트 2023. 10. 22. 16:55
예외처리 자바는 시스템에서 발생된 문제를 시스템 에러(Error)와 예외(Exception)로 구분한다. 시스템 에러는 개발자가 제어할 수 없는 문제이므로 제외하고 우리가 관리할 수 있는 예외에 집중한다. 일반적인 자바 애플리케이션이라면 try ~ catch ~ finally 구문을 통해서 예외를 처리할 수 있지만 스프링 기반의 웹 애플리케이션은 스프링에서 지원하는 예외처리 기법을 이용한다. 일반적으로 스프링에서 예외를 처리하는 방법은 두 가지가 있다. @ControllerAdvice 또는 @Rest ControllerAdvice 어노테이션을 이용하여 모든 컨트롤러에서 발생하는 예외를 일괄적으로 처리하는 것 '전역 예외처리' 라고 부름 @ExceptionHandler 어노테이션을 이용하여 각 컨트롤러마다..
-
5. 스프링부트 퀵 스타트IT 서적/스프링부트 퀵 스타트 2023. 10. 22. 16:47
JPA의 API 이해 : EntityManagerFactory와 EntityManager EntityManager 객체 JPA를 이용하여 CRUD 기능을 처리하려면 EntityManager 객체를 사용해야한다. 이 EntityManager는 EntityManagerFactory로부터 얻을 수 있다. 다음 그림은 EntityManager 객체를 얻기까지의 과정이다. Persistence 객체를 이용하여 persistence.xml에 명시된 JPA 메인 환경설정에 대한 정보를 가져온다. 영속성 유닛 설정 정보를 바탕으로 EntityManagerFactory 객체를 생성한다. EntityManagerFactory로부터 EntityManager를 얻어서 데이터베이스 연동을 처리한다. 다음은 EntityManag..
-
4. 스프링부트 퀵 스타트IT 서적/스프링부트 퀵 스타트 2023. 10. 22. 14:37
테스트와 로깅, 빌드 개발자들은 누구나 자신이 작성한 코드에 문제가 없음을 검증하기 위해 어떤 방법으로든 테스트 코드를 작성한다. 대부분의 프로젝트에서는 JUnit을 기반으로 일관성 있는 단위 테스트를 진행하는데, 단위 테스트란 자신이 작성한 클레스에 대한 테스트로서 테스트 단계 중에서 가장 기본이라고 할 수 있다. 우선 아래와 같은 의존성을 생성한다. org.springframework.boot spring-boot-starter-test
-
3. 스프링부트 퀵 스타트IT 서적/스프링부트 퀵 스타트 2023. 10. 22. 14:22
의존성 재정의하기 부모로부터 상속된 의존성은 자식 프로젝트에서 재정의할 수 있다. pom.xml 파일에 등록된 스타터 설정들을 보면 스타터들에 대한 version 정보가 없다. 이는 부모로부터 버전 관련 properties 설정이 상속되었기 때문이다. 부모로부터 상속받은 properties를 재정의 하면 당연히 재정의된 dependency 설정이 우선순위가 높기 때문에 부모의 설정이 적용되지 않는다. 스프링 부트의 자동설정 기능 자동설정이란? 스프링 부트로 만든 프로젝트에는 애플리케이션 실행을 위한 메인 클레스가 기본적으로 제공된다. 이 메인 클레스를 실행하면 내장 톰캣이 구동되고 스프링 기반의 웹 애플리케이션이 잘 동작하는 것도 확인할 수 있다. 이처럼 복잡한 과정을 프로젝트 생성 및 실행만 하면 자연..
-
2. 스프링부트 퀵 스타트IT 서적/스프링부트 퀵 스타트 2023. 10. 22. 13:41
스프링부트의 기본적인 개념과 여러가지 숨겨진 컨셉(개념)들 스프링 부트의 기본적인 구조 java : 기본적인 자바 소스가 들어가 있는 폴더 resources : XML 또는 properties 파일들이 등록돼 있는 폴더 junit : 테스트 케이스를 위한 폴더 pom.xml의 정의와 주요 내용 프로젝트의 전반적인 설정을 담당하는 파일 pom.xml에서 가장 중요한 설정은 의존관계에 해당하는 설정이다. 여기에 'spring-boot-starter-XXX' 형태의 의존관계 두 개가 추가되어 있는데, 내용은 아래와 같다. 여기서 중요한 점은 pom.xml의 dependencies는 굉장히 간결한데 'Maven Dependencies'의 하이라키 구조를 보면 굉장히 많은 jar 파일들을 import하고 있는 것..
-
1. 스프링부트 퀵 스타트IT 서적/스프링부트 퀵 스타트 2023. 10. 22. 13:00
이번 장에서는 스프링부트의 등장 배경과 특징에 대해 알아보자. 스프링부트의 등장 배경 시간이 점차 지나갈 수록 스프링에서 제공해주는 방대한 기능을 유지 및 관리하는데 많은 시간이 소요됨 개발 업무를 수행할 시간에 스프링 관련 환경설정 세팅에 초점이 생김 이를 극복하기 위해서, 스프링 부트의 필요성이 부각됨 스프링 부트를 통해서 스프링과 관련된 환경을 더욱 유동적이고 자동화시키며, 개발자는 개발에만 전념할 수 있도록 도와줌. 스프링부트의 장점 라이브러리 관리 자동화 기존에는 메이븐, 그레이들을 이용해서 라이브러리의 의존성을 관리했지만 스프링 부트에서는 스타터라는 것을 이용해 특정 기능에 대한 라이브러리 의존성을 더욱 간단히 처리할 수 있다. 설정의 자동화 스프링 부트에서는 프로젝트에 추가된 라이브러리를 기..
-
클린한 코드 작성법유튜브/드림코딩 2023. 10. 22. 12:13
클린한 코드를 작성하는 요령 세 가지 "반복하지마라!" 의 원칙 : DRY(Don't Repeat Yourself) 시스템의 조직은 단 한곳에서 명확하고 신뢰할 수 있도록 존재해야 한다. 코드를 작성할 때, 코드나 기능, 로직 등이 반복적으로 나타나는 경우에는 반복을 피해야한다. "심플하고 멍청하게 유지하자!"의 원칙 : Keep It Simple, Stupid 코드를 간결하게 작성하기 위해서 어렵고 복잡한 로직을 한 줄로 표현하는 것 보다, 해당 로직에 맞는 로직을 심플하고 간결하게 작업하는 것에 초점을 둔 방식이다. 로직을 심플하고 간결하게 작업한다면, 누구나 로직을 읽고 쉽게 이해할 수 있으며 유지보수 작업을 하기에도 수월하기 때문이다. 아래와 같은 로직처럼 userService는 userServi..
-
[ORACLE] PIVOT 함수 사용법DB 2023. 10. 22. 11:53
PIVOT을 이용하려면 집계함수를 이용해야한다. 집계함수가 아닌 해당 값을 가져와야 하는 경우는 아래처럼 MAX 함수를 이용하면 된다. 또한 Alias를 활용하여 VO객체의 필드부분과 변수명을 통일시켜 매핑을 동적으로 할당해줄 수 있다. SELECT * FROM ( SELECT A.PLANT_CD ,A.LINE_CD ,A.PROC_CD ,A.DEVICE_CD ,A.ITEM_CD ,A.PD_BARCODE ,A.PROD_WORK_DT ,A.PROD_WORK_RESULT ,A.PROD_WORK_VALUE ,A.REG_ID ,B.INSP_RESULT FROM QM.PROD_QUALITY_HI A LEFT OUTER JOIN QM.FINAL_INSP_HI B ON B.PLANT_CD = A.PLANT_CD AND..
-
Http와 Https의 차이점네트워크 2023. 10. 22. 11:46
HTTP란? HTTP는 Hyper Text Transfer Protocol의 줄임말으로써 서버와 클라이언트간에 데이터를 주고 받는 프로토콜이다. HTTP의 단점? HTTP 통신은 클라이언트와 서버간의 통신에 있어서 별다른 보안 조치가 없기때문에 만약 누군가 네트워크 신호를 가로챈다면 HTTP의 내용은 그대로 외부에 노출된다. 이를 극복하기 위해 개발된 것이 HTTPS이다. HTTPS란? HTTP와 똑같지만 차이점은 데이터 암호화가 추가된 프로토콜이다. 암호화 방식은 아래와 같다. 대칭키 암호화와 비대칭키 암호화 HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있다. 각각의 암호화 방식은 다음과 같다. 대칭키 암호화 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함 키가..