\*이 예시는 spring boot 프로젝트 기본 패키징 방법이 jar로 되어있을 경우입니다.pom.xml에 <packaging>war</packaging>을 추가해준다.메인에서 SpringBootServletInitializer를 extends 해준다. 그
프로젝트 진행 시 공용 repository를 두고, fork하여 로컬에서 개발 후 pull request로 공용 repository에 반영하는 식으로 진행할 수 있다. 이 때 original과 나의 소스코드가 다르면 충돌이날 수 있다. 이걸 방지하기 위하여 주기적으로
@EqualsAndHashCode equals와 hashcode를 만들어 주는 것 equals: 두 객체의 내용이 같은 지 확인 hashcode: 두 객체가 같은 객체인지 확인 Ex. @EqualsAndHashCode(of="id"): 연관관계가 복잡해 질 때,
리팩토링을 할 때, 테스트 코드를 작성한 후, 리팩토링 한다.그렇게 해야지, 원래 잘 돌아가던 코드가 리팩토링 후에도 잘 돌아가는지 확인할 수 있기 때문이다.
패스워드 같은 보안에 민감한 정보는 절대 그 자체를 DB에 넣으면 안된다.해싱을 하여 저장하고, 로그인 시 비밀번호를 해싱한 값으로 DB와 비교한다.간단히 말해서 12345를 특정한 알고리즘(ex. bcrypt)에 따라 임의의 문자열 asfasjkvnsanksaufbw
스프링부트에서 프론트엔드 라이브러리를 관리 하는 몇 가지 방법이 있다.다운 받아서 직접 사용WebJarNPM이 중 NPM을 사용하는 방법을 알아보겠다.정적 자원을 제공하는 디렉토리 (src/resources/static)에서 npm init을 입력한다.다 엔터를 눌러준
화면에 값을 출력할 때 사용조건문처럼 사용 한다. 해당 조건이 만족할 때만 보여준다.해당 value의 error가 있는 경우 출력한다.form의 validation error를 출력할 때 사용할 수 있다.form 태그 사용 시, 해당 경로로 요청을 보낼 때 사용. (u
로그인 시, jsessionid(tomcat 컨테이너에서 세션을 유지하기 위해 발급하는 키)가 생긴다. 이것을 통해 웹브라우저와 서버가 연결된다. 이 id에 해당하는 서버 쪽에 세션이라는 메모리가 있다.만약 이것에 해당하는 객체가 서버 쪽에 없거나, 클라이언트가 키값을
Open EntityManager In View 라는 필터는 JPA EntityManager(영속성 컨텍스트: DB에서 읽어온 객체들을 관리하는 컨텍스트. persistent 상태인 객체들을 관리) 또는 hibernate session(영속성 컨텍스트), 즉 영속성 컨
기본적으로 JpaRepository가 제공하는 메서드들은 모두 트랜잭션 처리가 되어있다.그렇지만, 우리가 만들어서 추가한 메서드들은 트랜잭션 처리가 안되어 있기 때문에, repository에 @Transactional을 붙여주거나, 각각 메서드에 @Transaction
이미지를 저장하는 방법서버에 파일을 직접 저장하는 방법DataUrl(아주 긴 문자열)을 통해 DB에 저장하는 방법. 문자열 자체가 데이터라고 생각하면 된다.
객체들의 프로퍼티를 복사해주는 유틸리티이다.ModelMapper를 통해 이런 부분들을 간단하게 바꿔줄 수 있다.ModelMapper를 사용하려면 아래의 의존성을 추가해줘야한다.그 후 적용하기 위해 Bean으로 등록해야한다.ModelMapper의 map이라는 메서드를 사
만약 메서드에 @ResponseBody가 붙어있다면, 그 메서드의 리턴 값은 View에 출력되는 것이 아니라, HTTP Response Body에 쓰여서 보내진다.ajax 요청에 대한 응답을 보낼 때 같은 경우에 사용한다.아래의 경우 ajax 요청으로 settings/
findById eager fetch로 무조건 DB에서 읽어오는 경우이다. getOne lazy loading 이다. 캐싱된 Entity가 있는 경우 Entity manager를 통해서 필요한 순간에만 읽어온다. 캐싱되어 있는 Entity가 없는 경우는 DB에서 읽
스프링 시큐리티를 적용하면, 별다른 설정을 하지 않더라도 기본적으로 csrf라는 기능이 활성화되어 있다.Cross-site request forgery의 약자로 타사이트에서 본인의 사이트로 form 데이터를 사용하여 공격하려고 할 때, 그걸 방지하기 위해 csrf 토큰
stream은 배열 또는 collection 인스턴스들(List, set 등)을 하나씩 참조하여 반복적으로 사용할 수 있게 해주는 것이다.람다식(함수를 변수처럼 사용하는 것)을 활용하는 방법이고, 배열 또는 collection 인스턴스를 여러 함수를 사용해서 .을 이어
Gmail SMTP를 사용하기 위해서는 https://myaccount.google.com/security 링크로 접속하여 2단계 인증을 ON으로 해주어야한다.그 후 바로 아래의 앱 비밀번호를 생성해주면 된다.그러면 기기용 앱 비밀번호가 생성된다. 이 번호를
이미지를 전송한다든지 할 때, 요청의 크기가 2MB를 넘으면 톰캣이 요청을 받을 수 없어 요청을 거부한다.톰캣 뿐만 아니라 모든 서블릿 컨터이너들은 처리할 수 있는 요청의 기본 크기 제한 설정이 걸려져있다.이를 해결하기 위해, 스프링에서는 application.prop
Mac 기준입니다⌥ + ⌘ + L 프로젝트에서 실행 시 하위 프로젝트의 파일들까지 자동화시켜줌^ + ⌥ + O 프로젝트에서 실행 시 하위 프로젝트의 import까지 정리해줌⌥ + Enter 노란 박스나, 에러가 뜬 경우 해당 위치에서 단축키를 눌러주면 제안을 해준다.
코딩을 하다보면, 똑같은 코드를 계속 치는 경우가 생긴다. 나는 테스트 코드를 작성할 때, 기본 틀을 타이핑하는 것이 너무 귀찮았다.😭 이를 인텔리제이의 Live template으로 해결해보자!