jpa 엔티티 클래스에 @EqualsAndHashCode 연산을 사용하는 경우. IDEA에서 경고 메시지를 표시합니다. Using @EqualsAndHashCode for JPA entities is not recommended. It can cause severe performance and memory consumption issues. JPA 엔티티에 @EqualsAndHashCode를 사용하는 것은 권장되지 않습니다. 심각한 성능 및 메모리 소비 문제를 일으킬 수 있습니다. JPA 엔티티에 @EqualsAndHashCode 주석을 사용할 수 있지만 IntelliJ IDEA는 성능 및 메모리 소비 문제를 일으킬 수 있으므로 사용하지 않는 것이 좋다는 경고 메시지를 표시합니다. 이 경고가 표시되는 이..
Gradle은 JAVA 개발에 엄청난 도움을 주는 강력한 Build Tool이지만 생소한 groovy 문법과 설정 파일, 사용방법 때문에 오히려 신입 개발자 들을 헷갈리게 하기도 합니다. 다행인 점은 gradle 을 사용하기 위한 학습 곡선이 높지 않고 대부분의 팀에서 gradle을 어렵게 사용하지 않는다는 점입니다. 이 포스트에서는 웹 개발에 필요한 최소한의 gradle 지식을 알아 보도록 하겠습니다. Build Tool Gradle 은 일종의 build tool(빌드 도구) 입니다. 여기서 말하는 빌드라는 개념은 단순히 프로그램을 컴파일하여 애플리케이션을 생성하는 작업만을 의미하지는 않습니다. 개발한 소프트웨어가 제품으로 만들어지는 일련의 과정, 즉, 컴파일, 테스트, 배포, 문서화 등의 작업을 포함..
Spock은 Groovy문법을 사용한 단위 테스트 프레임워크입니다. Spock은 다른 테스트 프레임워크에 비해 시간을 아낄 수 있고 Stubbing, Mocking, Spying 작업들을 아주 간단한 코드로 할 수 있습니다. 또한 Spock는 요즘 핫한 BDD에 적합한 프레임워크라고 합니다. 오늘은 이처럼 다양한 장점을 가진 Spock을 간단하게 살펴보도록 하겠습니다. def "나이가 30살이다"() { given: def age when: age = 29 then: 30 == age } 위 코드는 잘 못된 코드이기 때문이기 때문에 테스트가 실패합니다. 이 때 Spock는 명확하고 아름답게 오류 메세지를 표시해 줍니다. 이것은 Spock을 사용하는 또 다른 이유입니다. Condition not satis..
민감한 정보를 서버나 DB에 직접 업로드 하게 되면 외부에 노출될 수 있는 위험이 생기게 됩니다. 또한 현대 웹 개발 환경은 서비스를 다중 서버에 분산해서 제공하고 자연스럽게 민감한 정보들도 다중 서버에 분산되서 저장되게 됩니다. 따라서 민감한 정보에 대한 위험도는 더욱 더 증가할 수 밖에 없습니다. Vault는 이런 문제점을 해결해 주는 오픈소스(paid version 도 존재)입니다. Vault 는 실제 애플리케이션 서버에서 민감한 정보드를 제거하고 Vault에 요청해서 사용할 수 있도록 만들어 줍니다. 실제로 Vault를 사용한 프로젝트는 위 이미지와 비슷한 구조를 가지게 됩니다. 실제로 Spring 에 Vault 를 적용하는 방법을 알아보도록 하겠습니다. - 추후 작성 예정
대부분의 현대 애플리케이션들은 위 그림처럼, 소위 프론트엔드라고 부르는 클라이언트와 백엔드라고 부르는 서버가 상호간 데이터를 주고 받는 형태의 아키텍쳐를 가지고 있습니다. 이렇게 서버와 클라이언트가 분리되는 구조의 가장 큰 특징 중 하나는 서버와 클라이언트가 독립적으로 진화할 수 있다는 것입니다. 독립적으로 진화한다는 뜻은 각각의 업데이트 내용이 서로에게 영향을 끼치지 않는 다는 것입니다. 즉, 서버의 기능이 변경되어도 클라이언트는 업데이트 할 필요가 없고 그 반대 역시 마찬가지 입니다. 가장 대표적인 예시는 웹(Web) 입니다. 웹 페이지가 변경되었다고 해서 웹 브라우저를 업데이트 할 필요도 없으며, 웹 브라우저가 업데이트 됐다고 해서 웹 페이지를 변경할 필요도 없습니다. HTTP 명세가 변경되거나, ..
이전에 서블릿 보안과 관련된 포스트(링크)를 작성했던 적이 있습니다. 서블릿 기반의 웹 애플리케이션에서 인증과 인가 과정을 간단하게 설명했습니다. 스프링에서는 마찬가지로 이런 인증과 권한등 보안에 관한 기능을 제공하는 프레임워크인 스프링 시큐리티(Spring Security)가 있습니다. 스프링 시큐리티는 보안과 관련되어 수행해야 하는 다양한 작업들을 지원해 줍니다. 하지만 저와 같은 신입 개발자들이 스프링 시큐리티와 같은 보안기술을 이해하는 것은 쉬운 일이 아닌 것 같습니다. 여전히 모르는 것이 더 많고 어렵게 느껴지는 부분이지만, 최근 진행한 팀 프로젝트에서 스프링 시큐리티와 관련된 기술을 쓰며 알게된 사실들과 코드를 포스팅해 보려고 합니다. 인증(Authentication)과 권한(Authoriza..
1. standard html/xml comments 표준 html/xml 주석( )은 thymeleaf templates 어디서나 사용가능하다. 이 주석 안에 어떤 것이 들어가더라도 백엔드에서나 프론트엔드에서 실제로 수행 되지 않는다. 단순히 결과에 그대로 복사될 뿐이다. 2. Thymeleaf parser-level comment blocks parser-level comment block들은 thymeleaf가 문서를 파싱할 때 템플릿에서 제거되는 코드를 의미한다. thymeleaf는 이 블록 안에 있는 모든 것들을 완전하게 제거한다. 3. Thymeleaf prototype-only comment blocks thymeleaf에는 템플릿이 static하게 보여질 때만 주석이 되는 특별한 주석 블록..
thymeleaf를 사용하면 쉽게 controller를 통해 전달받은 model을 사용할 수 있다. 표현식(expression)을 이용해서 객체를 전달받아 사용할 수 있다. 그런데 만약 이런 경우에는 어떻게 해야할까? data.get('key')}"> 전달받은 data에서 key 값을 통해 다른 데이터를 받아야 할 경우, 때에 다라서는 key 값이 동적으로 변하기도 한다면? 이런 경우를 대비해 Thymeleaf의 표현식을 통해 controller 에서 넘어온 attributes등을 표시할 때, Thymeleaf는 preprocessing expressions 라는 것을 제공한다. preprocessing expressions을 통해 이미 사용되고 있는 expressions 안에 또 다른 표현식을 사용할 ..
- Total
- Today
- Yesterday
- 크롬
- 마르코프
- Count
- 디자인패턴
- 야근
- 유지보수
- 몰라서망신
- 로그
- DP
- 자바스크립트 개론
- restful api
- Warning
- java
- RESTful
- 경고
- 전략패턴
- Spring in Action
- 동적계획법
- 마르코프 연쇄
- 클린코드
- was
- 문장 생성기
- GROUP BY
- CONVENTIONS
- 코딩의 기술
- Markov
- html
- 자바스크립트개론
- markov chain
- REST API
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |