Spring
-
Maven QueryDSL QClass 에러Spring 2023. 1. 24. 20:21
Maven에서 QueryDSL 사용을 위한 QClass 생성 도중 오류 발생 문제 Complie을 눌러도 별도의 QClass 생성이 안됨 원인 찾기 및 해결 Gradle이 아닌 Maven 환경에서의 QueryDSL글을 찾아가며 구글링 진행하며 아래 순서대로 진행하며 문제 해결 pom.xml queryDSL 플러그인 확인 및 버전 5.0 이상 확인 Gradle 기준 queryDSL이 5.0 이하의 버전을 사용할 경우 컴파일 시 QClass 생성이 안된다고함 혹시 몰라서 Maven에서도 수정 Maven 클린 이후 다시 컴파일 해결완료 맨날 마크다운으로 쓰던 기본모드로 쓰던 리스트가 이상하네... 단순하면서 당연한 이야기로 타겟 폴더가 살아있어 새롭게 QClass를 만들지 못함
-
TDD[3]Spring 2021. 10. 8. 15:45
테스트 주도 개발의 패턴 테스트 주도 개발 패턴 테스트 한다는건 무엇을 뜻하는지? 언제 테스트를 해야 하는지? 테스트할 로직을 어떻게 고를지? 테스트할 데이터를 어떻게 고를지? 테스트란? 테스트할 시간이 어딨어. 그냥 릴리즈해 이 장면에 대해서는 결과를 보장할 수 없다. 스트레스를 점점 많이 받으면 결국 실패하게 된다. - 스트레스를 받으면 테스트를 실행한다. 테스트를 실행하면 스트레스를 받는다. - 이 부분의 경우 자동화된 테스트가 존재하다면 두려운 정도를 선택할 수 있다. (스트레스 또한 줄일 수 있게 된다.) 격리된 테스트 매일 아침 출근하면 지난밤 테스트 결과를 담은 종이더미가 놓여 있었다. 이 경험에서 두 가지의 교훈을 얻을 수 있었다. 테스트가 충분히 빨라서 내가 직접, 자주 실행할 수 있게끔..
-
TDD[2]Spring 2021. 10. 8. 15:45
XUnit 예시 XUnit은 직접 해보지 않고 책만 읽음 XUint 으로 가는 첫 걸음 정리 자기 과신에 차서 몇 번의 잘못된 출발을 한 후, 아주 자그마한 단계로 시작하는 법을 알아냈다. 일단 하드코딩을 한 다음에 상수를 변수로 대처하여 일반성을 이끌어 내는 방식으로 기능을 구현 플러거블 셀렉터를 사용했다. 플러거블 셀렉터는 정적 코드 분석을 어렵게 만들기 때문에 앞으로 최소 4개월 안에는 사용하지 않기로 약속 메서드 이름을 저장하여 해당하는 메서드를 동적으로 호출하는 방법 테스트 프레임워크를 작은 단계로만 부트스트랩했다. 테이블 차리기 테스트를 작성하면 공통된 패턴을 발견하게 된다. 3A 패턴 given - when - then 아닌가? 준비 (arrange) - 객체를 생성 행동 (act) - 어떤..
-
TDD[1]Spring 2021. 10. 8. 15:44
그냥 Spring에 저장함 Test - Driven Development : By Example TDD를 쫒아가려 하지 말고 TDD가 나를 쫒아오게 해라 TDD 수련법 처음 훈련 방법 간단하고 쉬운 문제들을 TDD로 시도합니다. 가능하면 전에 접하고, 프로그래밍해본 문제가 좋습니다. 초록 막대 주기는 가능하면 짧도록 합니다. ex) a=b+3Xc를 입력하고자 할 때, a= 까지 입력한 시점은 빨간 막대 시점입니다. 그 시점에서 테스트를 실행하면 분명히 실패할 것이기 때문입니다. 가능한 초록 막대가 나오도록 해야 합니다. 이때 초록 막대 주기의 최대 시간을 정해놓고 진행하다가 시간을 초과하면 직전 초록 막대 상태로 돌린다음 새로 시작하는 것이 좋습니다. 진짜로 만들기 전까지만 가짜로 구현하기를 적극적으로 ..
-
Spring Security[2]Spring 2021. 7. 19. 11:24
스프링 시큐리티 주요 아키텍처 이해 DelegatingFilterProxy, FIlterChainProxy DelegatingFilterProxy 서블릿 필터는 스프링에서 정의된 빈을 주입해서 사용할 수 없음 특정한 이름을 가진 스프링 빈을 찾아 그 빈에게 요청을 위임 springSecurityFilterChain 이름으로 생성된 빈을 ApplicationContext 에서 찾아 요청을 위임함 실제 보안처리를 하지 않음 FilterChainProxy springSecurityChain 의 이름으로 생성되는 필터 빈 DelegatingFIlterProxy 으로 부터 요청을 위임 받고 실제 보안을 처리 스프링 시큐리티 초기화 시 생성되는 필터들을 관리하고 제어 스프링 시큐리티가 기본적으로 생성하는 필터 설정..
-
Spring Security[1]Spring 2021. 7. 19. 11:23
Spring Security 프로젝트 구성 및 의존성 추가 org.springframework.boot spring-boot-starter-security 스프링 시큐리티의 의존성 추가 시 서버가 기동되면 스프링 시큐리티의 초기화 작업 및 보안 설정이 이루어진다. 별도의 설정이나 구현을 하지 않아도 기본적인 웹 보안 기능이 현재 시스템에 연동되어 작동한다. 모든 요청은 인증이 되어야하 자원에 접근이 가능 인증 방식 폼 로그인 httpBasic 로그인 기본 로그인 페이지 제공 기본 계정 한 개 제공 ID : user PWD : 랜덤 문자열 문제점 계정 추가 권한 추가, DB 연동 등 기본적인 보안 기능 외에 시스템에서 필요로 하는 더 세부적이고 추가적인 보안기능이 필요 사용자 정의 보안 기능 구현 secu..
-
토비의 스프링[8] 스프링이란 무엇일까?Spring 2021. 7. 19. 11:08
스프링 프레임워크 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션의 전 영역을 관통하는 일관된 프로그래밍 모델과 핵심 기술을 바탕으로 해서 각 분야의 특성에 맞는 필요를 채워주고 있기 때문에, 애플리케이션을 빠르고 효과적으로 개발할 수가 있다. 이것이 스프링이 애플리케이션 프레임워크라 불리는 이유다. 스프링을 MVC프레임워크 혹은 JDBC/ORM 지원 프레임워크라고 생각하는 것은 스프링이 다루는 일부 영역만 봤기 때문이다. 스프링을 IoC/DI 프레임워크나 AOP 툴이라고 보는 이유는 스프링이 제공하는 핵심 기술에만 주목했기 때문이다. 스프링의 일차적인 존재 목적은 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역..
-
토비의 스프링[7] 스프링 핵심기술과 응용Spring 2021. 4. 14. 22:18
SQL과 DAO의 분리 현재 기능이 변경되어 SQL이 변경될 경우 SQL을 담고 있는 DAO 코드가 수정될 수밖에 없다. XML 설정을 이용한 분리 가장 손쉽게 SQL을 분리하는 방법으로는 SQL을 스프링의 XML 설정파일로 빼내는 것이다. 개별 SQL 프로퍼티 방식 UserDao 메소드의 SQL문장을 제거하고 외부로부터 DI 받은 SQL문장을 이용해서 쿼리를 실행한다. SQL 맵 프로퍼티 방식 SQL이 점점 많아지면 그때마다 DAO에 DI용 프로퍼티를 추가하기가 상당히 귀찮기에 스프링 XML 설정을 통한 컬렉션으로 담아주는 방법을 시도하여 SQL을 담을 XML 설정 프로퍼티 타입을 스프링이 제공하는 map과 entry를 이용하여 userDao빈의 프로퍼티를 수정해보자. SQL 제공 서비스 스프링의 설정..