Gmail에 들어가 설정(톱니바퀴)을 클릭하고 모든 설정 보기로 들어간다. 전달 및 POP/IMAP에 들어가서 설정을 바꿔준다. 계정으로 들어가서 보안으로 들어간다. 2단계 인증을 해준 뒤 위의 화살표로 들어가서 앱 비밀번호를 설정해준다. 설정한 비밀번호를 저장해둔다. 이제 인텔리제이로 들어가서 build.gradle에 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-mail' .yml 파일에 들어가서 설정 내용을 작성해준다. spring: mail: host: smtp.gmail.com port: 587 username: [내 이메일 주소] password: [위에서 저장한 앱 비밀번호] properties: mail: s..
다음과 같은 양방향 관계가 있을 때 @Entity public class A{ @ManyToOne private B b; } @Entity public class B{ @OneToMany private List a = new ArrayList(); } toString 메서드에서 서로를 호출한다면 //A클래스에서 public String toString(){ return "어쩌구: " + b; } 무한으로 호출하게 되어 StackOverflowError 가 발생하게 된다. 서로 호출하지 않도록 b를 제거하는 방법도 있지만 Lombok 기능을 활용해줄수도 있다. @ToString(exclude = "b") public class A{ @ManyToOne private B b; } 이렇게 해주거나 public..
로버트 마틴님께서 좋은 객체 지향 설계의 5가지 원칙을 정리해주셨다. 1. SRP: 단일 책임 원칙 -> Single Responsibility Principle 2. OCP: 개방-폐쇄 원칙 -> Open/Closed Principle 3. LSP: 리스코프 치환 원칙 -> Liskov Substitution Principle 4. ISP: 인터페이스 분리 원칙 -> Interface Segregation Principle 5. DIP: 의존관계 역전 원칙 -> Dependency Inversion Principle - SRP 한 클래스는 하나의 책임만 가져야 한다. -OCP 확장에는 열려 있고 변경에는 닫혀 있어야 한다. -LSP 프로그램의 객체는 하위 타입의 인스턴스로 바꿀 수 있어야 한다. (다형..
인텔리제이를 들어갔더니 갑자기 모든 import가 에러가 뜨면서 적용이되지 않았다!! 이럴때는 build gradle에 들어가서 옆에 있는 Gradle을 클릭 후 왼쪽 상단에 보이는 새로고침 표시 refresh 을 클릭해주면 해결된다!!