주말아침에도 프로젝트 생각에 눈이 번쩍 떠지는걸 보면 코딩이 재미있어서, 내가 좋아하는 일을 발견해서 정말 다행이라는 생각도 든다.
토요일 오전에 거래 CRUD를 만들었고, 일요일 오후에는 고정지출 CRUD를 만들었다.
CRUD를 여러번 반복하다보니 점점 익숙해져가지만 여전히 다른 코드를 참고할 때가 있는걸 보면 아직 더 연습해야겠다는 생각이 든다. 하지만 전보다는 더 빠르게 테스트를하고, 오류를 찾아내서 고치는걸 보면 성장하고 있는 느낌도 확실히 든다.
8시에 잠들어서 12시간을 잤음에도 코피가 났다.
요즘 집중력이 좋아서 8시간동안 한번도 쉬지않고 작업을 하는데, 오늘부터는 하루세번 10분씩이라도 쉬는시간을 꼭 가져야겠다.
오늘부터는 로그인과 Security를 작업해야하는데 아직 부족한 부분이 많아서 많은 검색과 공부를 하면서 다뤄봐야한다. 익숙하지 않은 메소드들이 많아서 따라치기에 급급하지만 어떤 역할을 하는지 메모하면서 차근차근 시큐리티를 구현했다.
MemberService Bean 등록을 위한 JavaConfiguration 구성
Spring Security에서는 Spring Security에서 관리하는 User 정보를 UserDetails로 관리한다
Spring Security에서는 User의 인증 정보를 테이블에 저장하고, 테이블에 저장된 인증 정보를 이용해 인증 프로세스를 진행할 수 있는 몇 가지 방법이 존재하는데 그중 한 가지 방법이 바로 Custom UserDetailsService를 이용하는 방법이다.
member(자식)테이블의 컬럼을 삭제하려고 했을때 외래키의 무결성 제약조건에 위배 되어 발생한 오류를 만났었다.
could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Auditable {
@CreatedDate
@Column(name= "createdAt", updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column(name= "modifiedAt")
private LocalDateTime modifiedAt;
}
public class Member extends Auditable {
@EnableJpaAuditing // JPA Auditing 활성화
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}