전체 글

Argument Resolver Argument Resolver란 Spring 프레임워크에서 다양한 방식으로 Client 요청에서 파라미터를 추출-가공 하는데 사용된다. 보통 직접적인 통신 (DB통신)이 아닌 HTTP 세션, 쿠키, 헤더 등에서 추출하거나 가공하여 컨트롤러 메서드에 전달하는데 사용된다. Argument Resolver를 사용하여 코드 중복을 줄이고, 컨트롤러를 간결하게 유지할 수 있다. 예제 클라이언트 IP, 유저 ID를 추출 @Data public class UserDto { private final String id; private final String ipAddress; } WebMvcConfigurer에서 Argument Resolver를 등록해야 한다. @Configuratio..
QueryDSL은 Java 언어를 사용하여 SQL 쿼리를 더욱 쉽게 작성하고 유지보수할 수 있도록 도와주는 오픈 소스 라이브러리입니다. Java 코드로 SQL 쿼리를 작성하는 것은 보다 프로그래밍적인 접근 방식을 제공하며, 컴파일 시점에서 오류를 찾아내고 IDE의 자동 완성과 같은 기능을 활용할 수 있게 해줍니다. QueryDSL은 데이터베이스와의 상호작용을 위한 쿼리를 타입 안전한 방식으로 작성하고, 코드 내에서 쿼리를 조합하고 필터링하는 기능을 제공합니다. 이는 문자열 기반의 SQL 쿼리 작성에 비해 훨씬 안전하고 가독성이 높은 코드를 작성할 수 있게 해줍니다. QueryDSL은 주로 다음과 같은 장점을 가지고 있습니다: 타입 안정성: QueryDSL은 Java의 타입 시스템을 활용하여 쿼리 작성 시..
동적 계획법, DP란? 다이나믹 프로그래밍이란, 하나의 문제를 여러 작은 파트로 나누어서 그 결과를 저장하여 하나의 문제를 해결하기 위한 알고리즘이 아닌 문제해결 방식 중 하나이다. 일반적인 재귀 방식과 매우 유사한데, 큰 차이점은 일반적으로 재귀를 단순히 사용할시 동일한 작은 문제들이 여러번 반복 되어 비 효율적인 계산이 될 수 있다는 것이다. DP를 사용하기 위해서는? 겹치는 부분, 즉 문제에서 동일한 반복이 일어나는지 파악해야한다. 또한, 부분 문제의 최적 결과 값을 사용해 문제의 최적 결과를 낼 수 있어야 한다. DP는 부분 문제의 결과를 저장하여 재 계산하지 않아야 하는데, 부분 문제가 반복적으로 나타나지 않는다면 재사용이 불가함으로 사용할 수 없다. 앞에서 말했듯이, DP는 알고리즘이 아닌 문..
요즘은 거의 모든 사이트에서 필수적으로 사용되고 있는 기술이 있다. 물론 한두가지가 아니지만, 웹에서 편의성을 추구한다면 이 부분은 꼭 짚고 넘어가야 할 것 같다. 요즘은 대부분의 사이트들에서 개인 정보를 자세히 요구하는 부분이 적어졌기 때문에 더 활용성이 높아진 것도 있을 듯 하다. 간단한 동작으로 로그인이 가능하고, 회원가입에 대한 정보 더 나아가, 해당 사이트의 기능까지 사용할 수 있는 이 시스템들에서 사용되는 기술, 프로토콜이 바로 Oauth다. 개인 정보 얘기가 나와서 말인데, 이 기술이 보안력이 취약하다거나 하는 뜻은 아니다. 회원가입이나 로그인에 제공해야 하는 정보가 적어졌다는 뜻으로서 사용했다. Open Authorization(Oauth)란 즉, 사용자의 아이디 비밀번호 없이 접근 권한을..
SpringBoot Security Adepter 최신버전의 스프링 시큐리티에서는 기존에 설정을 담당해주던 WebSecurityConfigurerAdapter 메소드가 사용되지 않게 바뀌었다. 원래부터 이렇게 사용해라 라는 가이드라인이 내려와 있었지만, 예전에 사용하던 방식을 고수하던것인데, 결국 최신버전에서는 해당 기능을 아예 Deprecated상태로 내려버렸다. @RequiredArgsConstructor @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http...
@SpringbootTest 오류 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.TheCp.repository.MemberRepositoryTest': Unsatisfied dependency expressed through field 'memberRepository': No qualify..
React 와 Spring 환경 구성 세팅 Springboot와 React가 모두 설치돼있다는 가정 하에 기록하는 문서이다. 연동하기 위해 따로 설치부터 설정해주어야 하는 부분들은 없기 때문에, 가장 기본으로 설치하고 진행해도 된다. Spring과 React를 연동해서 사용할 경우, 가장 큰 걸림돌은 Proxy 설정으로, cors 문제 및 오류 메시지를 피할 수 있게 하기위한 설정이다. Proxying API Requests in Development | Create React App 위는 React에서 제공하는 공식문서로, Proxy 설정하는 법에 대해 알려주고 있다. 그 외에도 여러가지 사용방법이나 기능들을 설명하는 문서가 많으니 참고해보는 것도 좋다. 💡 CORS (Cross Origin Resou..
implementation group:'mysql', name: 'mysql-connector-java', version: '8.0.23' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' mysql을 spring에서 사용하려면 디펜던시를 추가해주어야 한다. 위는 많이 사용되는 JPA와 MySQL을 연결하기 위해 connector를 설치해주자. build.gradle이 변경됐다면 꼭 새로고침 버튼을 눌러 관련 디펜던시의 데이터를 갱신해야한다. 오른쪽 하단에 작업중인 상태가 표시된다. 만약 서버가 실행되어 있다면 서버를 종료해주자 그 후 세팅해주어야 하는 부분은 application.yml 파일이다. 기본적으로는 applicati..
함형우
03.23 시작