728x90
DI 와 IoC 지난 시간에는 SOLID 원칙에 대해 알아봤다. [객체지향] SOLID 원칙이란?🌳 SOLID 원칙 오늘은 객체지향 개발의 5가지 원칙인 SOLID 원칙에 대해 공부해보았다. S,O,L,I,D 는 각각 단어의 첫 글자이며 합하여 솔리드 원칙이라고 부른다. 지금부터 솔리드 원칙에 대해 알아보pgmjun.tistory.com SOLID원칙은 좋은 객체지향 프로그램을 만들기 위한 중요한 원칙이다.하지만 스프링 없이 일반적으로 개발하게 된다면 DIP와 OCP 원칙을 어기게 될 뿐만 아니라, 원칙에 맞게 코드를 끼워 맞추다 보면 실제 비즈니스 로직보다 DIP, OCP를 위한 코드가 훨씬 많아지는 일이 발생한다. 이때 실질적인 해결책이 바로 DI와 IoC라는 개념이다. IoC (Inver..
오늘은 스프링부트에 Swagger2를 적용하는 방법에 대해 알아보려한다. Swagger란? Swagger는 API가 어떤 Spec을 가진 데이터를 주고 받는지 시각적으로 확인할 수 있도록 도와주는 API 문서 자동화 프레임워크이다. 위와 같이 API URI를 확인할 수 있을 뿐더러 직접 파라미터를 입력해 테스트도 진행할 수 있는 엄청난 프레임워크다. 적용 이제 이 Swagger를 직접 사용할 수 있도록 적용해보자. 우선 의존성을 추가해주어야한다. build.gradle// springfox-swagger-uiimplementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'implementation group: '..
오늘은 스프링부트에서 사용하는 라이브러리의 버전을 호환성이 있도록 잘 선택하는 방법에 대해 포스팅해보려고 한다.사실 starter 형태의 의존성을 추가하면 관련 라이브러리들을 버전에 맞게 설치해주지만,가끔 직접 버전을 입력해서 사용해야하는 경우가 있어 정리해보려고 한다. 우선 스프링 공식 웹페이지에 접속해야한다.https://spring.io/ Spring makes Java simple.Level up your Java code and explore what Spring can do for you.spring.io 접속하면 위와같은 화면이 나오는데 상단 여러개 탭 중에 'Projects - Spring Boot' 를 선택해야한다. 그럼 이런 화면이 출력되는데 여기서 OVERVIEW 우측에 있는 ..
팀 단위로 프로젝트를 진행하면서 팀원분 덕분에 잘못된 기초 개념을 바로잡을 수 있었다. 관련된 부분은 스프링 빈 등록인데 나는 여지껏 AppConfig를 만들고 @Bean 어노테이션을 사용하여 스프링 컨테이너에 스프링 빈을 등록하고서 @Service, @Repostiroy 등의 어노테이션으로 또 스프링 빈을 등록을 하는 멍청한 실수를 하고 있었다. @Service, @Repository 등 어노테이션을 사용하면 Main Method의 @SpringBootApplication 에 포함된 @ComponentScan 어노테이션이 해당 어노테이션을 가진 클래스들을 찾아 "얘는 Service고, 얘는 Repository네~" 라고 알아서 판단하여 알맞은 빈으로 등록을 해준다. (Service와 Repository..
API Spec 자동 문서화를 위해 SpringFox-Swagger2 를 사용할 때 failed to start bean 'documentationpluginsbootstrapper';이라는 오류 메세지와 함께 ApplicationContextException 예외가 발생하였다. 원인을 찾아보니 스프링 부트의 버전과 Swagger2의 버전이 호환되지 않아서 발생하는 문제였다. Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 몇몇 라이브러리(swagger포함)에 오류가 발생한다고 한다. 이 문제를 해결하기 위해 여러 방안을 몰색했고, 해결 방법을 3가지를..
DB를 통해 데이터를 관리하다보면 가끔 '외래키 제약조건'을 풀어주어야 하는 상황이 발생한다. 나같은 경우는 00시마다 PARK_DATA 테이블을 delete from 으로 초기화 시켜야하는데연관되어 있는 외래키 때문에 아래와 같은 오류가 발생해 골치아팠다. 이를 해결하기 위해선 EntityManager 의 createNativeQuery 함수를 사용해야한다. NativeQuery란?다양한 이유로 JPQL을 사용할 수 없을 때,JPA에서 NativeQuery를 통해 SQL을 직접 사용할 수 있는 기능을 제공. SQL 구문인 SET FOREIGN_KEY_CHECKS = 0 을 사용하면 외래키 체크 설정을 해제할 수 있지만JPQL에서 이와 같은 기능을 하는 문법은 찾을 수가 없었기에 굉장히 애먹었다. ..