1) 웹 애플리케이션 서버의 Filter 웹 애플리케이션 서버, 곧 서블릿 컨테이너의 Filter는 디스패처 서블릿으로 가기전에 먼저 적용 여러 개의 Filter들이 연결되어 있어 FilterChain이라도 불림 모든 Request는 Filter들을 거쳐 서블릿에 도착 2) Spring Security의 Filter DelegatingFilterProxy라는 필터를 만들어 FilterChain 사이에 넣어 SpringSecurity Filter를 거치도록 하고, Proxy 아래 SecurityFilterChain 그룹을 적용하여 특정 Url을 설정하여 다르게 동작하도록 한다. WevSecurityConfigurerAdapter을 상속받은 Config 사용자 클래스로 Config(HttpSecurity h..
분류 전체보기
1 ) Spring Security 정의 Spring 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크 인증(Authentication) 과 권한(Authorization) 에 대한 부분을 Filter의 흐름에 따라 처리를 하고 있다. 2) 인증(Authentication) 과 권한(Authorization) 인증 사이트에 접속하려고 할 때의 확인 절차 Session과 Token(Sessionless)을 통한 인증 절차 SNS 로그인에 인증 위임 인가 or 권한 사용자의 권한 설정 절차 특정 페이지 및 리소스에 접근 가능 판단 @Secure, @PrePostAuthorize 어노테이션으로 권한 체크 AOP를 이용하여 권한 체크 * 인증 절차를 거친 후 권한절차를 진행하게 된다. * 요즘에는 아이..
JPQL(Java Persistence Query Language) : Entity 객체를 조회하는 쿼리 QueryDSL : 쿼리 메소드 : 쿼리메소드의 경우 조건이 많아지게 되면 메소드의 이름이 길어지는 단점이 있다. public interface BookRepository extends JpaRepository { List findByCategoryIsNullAndNameEqualsAndCreatedAtGreaterThanEqualAndUpdatedAtGreaterThanEqual(String name, LocalDateTime createdAt, LocalDateTime updatedAt); } !!! @Query 어노테이션을 사용하여 메소드 명을 줄이고 가독성을 높인다. @Query 어노테이션 사..
영속성 전이 : 하나의 객체에서 다음 객체에 영속성을 흐려 보내는 것 Cascade의 경우, 연관관계가 있는 엔티티에(@OneToMany, @OneToOne...) 있는 경우에 CascadeType에 사용 가능. CascadeType 클래스 (Enum 타입) ALL : 모든 엔티티에 영속성 전이. PERSIST : 엔티티 저장시 영속성 전이 MERGE : 엔티티 업데이트 시 영속성 전이 REMOVE : 엔티티 제거 작업 시 영속성 전이 REFRESH : 엔티티의 영속성을 재로딩. DETACH : 영속성을 관리하지 않고 영속성으로부터 분리하는 속성. 해당 영역으로 전이가 일어날 때 릴레이션 엔티티에도 함께 전이를 일이킬지에 대한 속성 값 예제 1. CascadeType.PERSIST CascadeType...
Ex) failed to lazily initialize a collection of role: com.test.jpa.jpaProj.domain.Publisher.books, could not initialize proxy - no Session org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.test.jpa.jpaProj.domain.Publisher.books, could not initialize proxy - no Session at app//org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyI..
트랜잭션 Transaction? : 트랜잭션이란 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위, 또는 한꺼번에 모두 수행되어야할 일련의 연산을 뜻함 원자성...일관성...독립성...영속성....(ACID) Spring과 Java에서의 트랜잭션 Spring의 @Transactional : Transactional의 경우 class위와 method위에 어노테이션을 붙여줄 수 있다. class의 경우 내부에 있는 각각의 method를 트랜잭션화 한다는 것으로 method에 추가로 붙이면 method에 붙은 걸 우선 적용후 class 트랜잭션이 적용된다. 예제 1. @Transactional(rollbackFor = Exception.class) 사용 @Transactional(rollbackFor..
intelliji - MySQL 연결 1. application.properties 설정 spring.datasource.url=jdbc:mysql://localhost spring.datasource.username=root spring.datasource.password=1234 server.port=8080 2. Build.gradle 설정 runtimeOnly 'mysql:mysql-connector-java' 3. database 연결 4. Context 실행