실전스프링부트

스프링 5.7.2부터 WebSecurityConfigurerAdapter가 deprecated 되어 책과 내용이 다릅니다. https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter 1) 스프링 시큐리티 설정 커스터마이징 SecurityFilterChain 빈을 등록하여 커스터마이징 할 수 있다. HttpSecurity를 파라미터로 받아 리소스 접근 권한을 설정한다. 아래의 코드는 “/index”로 접근은 모두 허용하고, 나머지 리소스는 인증된 사용자만 접근할 수 있도록 한다. 만약 인증 되지 않은 사용자가 접근하면 로그인 페이지로 리다이렉트 시킨다. @Configuration public class ..
1) 스프링 시큐리티 활용 스프링 부트 프로젝트에 의존 관계를 추가한다. org.springframework.boot spring-boot-starter-security spring-boot-starter-security 스프링 시큐리티를 적용하는 데 필요한 모든 라이브러리를 포함하고 있다. 기본적으로 로그인 페이지, 계정 이름, 비밀번호를 만들어주나 커스터마이징도 가능하다. 실행 후 http://localhost:8080/index 에 접근하면 index 페이지가 아닌 로그인 페이지가 표시되는 것을 볼 수 있다. 로그인에 필요한 계정 이름은 user 이고, 패스워드는 애플리케이션 실행 시 스프링 시큐리티가 자동으로 만들어서 로그에 표시해준다. 로그인에 성공하면 index 페이지를 볼 수 있다. 스프링 ..
스프링 시큐리티 기본 기능 애플리케이션 사용자 인증 별도의 로그인 페이지가 없을 때 사용할 수 있는 기본적인 로그인 페이지 form 기반 로그인에 사용할 수 있는 기본 계정 패스워드 암호화에 사용할 수 있는 기본 계정 패스워드 암호화에 사용할 수 있는 여러 가지 인코더 사용자 인증 성공 후 세션 ID를 교체해서 세션 고정 공격 방지 HTTP 응답 코드에 랜덤 문자열 토큰을 포함해서 사이트 간 요청 위조(CSRF) 공격 방지 보안 공격을 방어할 수 있는 여러가지 HTTP 응답 헤더 제공 책 실전 스프링부트
@Query 애너테이션을 사용하면 커스텀 쿼리를 리포지터리 인터페이스의 메서드로 정의해서 사용할 수 있다. @Query 를 사용함으로써 몇가지 이점을 얻을 수 있다. @NamedQuery 를 사용하면 비즈니스 도메인 클래스에 쿼리를 추가하지 않아도 된다. 쿼리 메서드와 JPQL을 한 곳에 둘 수 있다. JPQL 뿐만 아니라 데이터베이스의 특화된 네이티브 쿼리도 사용할 수 있다. @Query 예제 소스 코드 : /ch03/using-query-annotation ?1, ?2 와 같이 위치기반으로 파라미터를 받을 수 있다. @Query("select c from Course c where c.category=?1") Iterable findAllByCategory(String category); :=cate..
1) 쿼리 메서드 쿼리 메서드 특정 패턴에 맞게 메서드 이름을 작성하면 이를 파싱해서 그에 맞는 쿼리를 실행 해준다. 쿼리 패턴 Query - 엔티티를 조회하는 데 사용 되는 메서드는 find..By, read..By, get..By, query..By, stream..By, search..By 형태로 이름 짓는다. Count - 엔티티의 개수를 세는 데 사용되는 메서드는 count..By 형태로 이름 짓는다. Exists - 엔티티의 존재 여부를 확인하는 데 사용되는 메서드는 exists..By 형태로 이름 짓는다. Delete - 엔티티를 삭제할 때 사용되는 메서드는 delete..By, remove..By 형태로 이름 짓는다. 1-1) 쿼리 메서드 예제 소스 코드 : /ch03/custom-quer..
스프링 데이터 Repository 인터페이스 public interface Repository {} 메서드나 상수를 포함하고 있지 않고, 오직 객체의 런타임 타입 정보만을 알려주는 마커 인터페이스 도메인 클래스와 도메인 클래스의 식별자 타입 정보를 포함하고 있다. 스프링 데이터 CrudRepository 인터페이스 public interface CrudRepository extends Repository {} Repository 인터페이스를 상속받은 하위 인터페이스 CRUD 연산을 포함 주요 메서드 S save(S entity) : 주어진 엔티티를 저장한다. Optional findById(ID id) : ID로 엔티티를 조회한다. Iterable findAll() : 모든 엔티티를 조회한다. long ..
들어가기에 앞서.. 책은 H2 데이터베이스를 예제로 다루고 있으나, 이 글에서는 Mysql을 사용하였습니다. [사전준비] MAC에 Mysql 설치 터미널을 통해 설치 한다. > brew update > brew install mysql > mysql --version mysql Ver 8.3.0 for macos13.6 on arm64 (Homebrew) > mysql.server start Starting MySQL SUCCESS! > mysql_secure_installation 초기설정 작업 수행 > mysql -u root -p Enter password: [비밀번호 입력] Welcome to the MySQL monitor. Commands end with ; or \\g. Your MySQL ..
스프링 데이터 여러 데이터 소스의 데이터를 다룰 때 일관성 있는 프로그래밍 모델을 제공하는 것 스프링 템플릿 보일러플레이트 코드를 작성해서 수행해야 하는 작업을 프레임워크가 대신 처리해줌 개발자는 비즈니스 로직에 더 집중할 수 있게 됨 보일러플레이트 특정 작업을 완수하기 위해 추가적으로 필요한 환경 준비, 예외 처리, 자원 관리 등을 담당하는 코드 스프링 데이터 모듈 스프링 데이터 프로젝트에 속하는 하위 프로젝트 기초 모듈 스프링 데이터 커먼즈 commons 다른 서브 모듈의 기초가 되는 기능을 포함하고 있음 서브 모듈 개별 데이터베이스에 특화 돼 있음 스프링 데이터 JDBC, 스프링 데이터 JPA, 스프링 데이터 몽고DB 등 책 실전 스프링부트
빈 밸리데이션은 자바 세계에서 사실상 표준 밸리데이션임 애너테이션으로 구현 커스텀 밸리데이터를 만들어 사용 1) 빈 벨리데이션 애너테이션 사용한 비즈니스 엔티티 유효성 검증 spring-boot-starter-validation 의존 관계 추가 org.springframework.boot spring-boot-starter-validation Course 클래스 추가 @Data @RequiredArgsConstructor public class Course { private long id; @Min(value = 1,message = "A course should have a minimum of 1 rating") @Max(value = 5,message = "A course should have a m..
yewonS2
'실전스프링부트' 태그의 글 목록