Spring Security는 직전 포스팅에서도 언급했듯, Config 클래스를 생성하여 내부 설정을 개발 목적에 맞춰 커스터마이징할 수 있다. 1. Resource 설정 Config 클래스가 상속받는 WebSecurityConfigurerAdapter 클래스의 내부 추상 메서드 configure를 재정의하여 사용할 수 있는데, 아래 코드와 같이 HttpSecurity 객체를 인자로 받아 사용자 인증, 인가를 제어할 수 있으며 로그인 페이지, 로그아웃 페이지, 로그인 성공 페이지 등 각 요청에 맞게 리다이렉트 요청 또한 설정할 수 있다. ◎SecurityConfig.java package com.choonham.security.config; import lombok.extern.log4j.Log4j2; ..
Spring Security는 사용자 인증과 인가 등의 보안 관련 기능을 개발자가 구현하기 쉽게 Spring이 제공해주는 라이브러리이다. 즉, 로그인이나 권한 설정 같은 기능을 직접 구현하지 않고도 사용할 수 있다는 것인데, 아ㅡ주 편리할 거 같으니 바로 들어가보자. 우선 Spring Project를 생성하는데, dependency를 추가할 때 필요한 라이브러리와 함께 반드시 Spring Security도 추가해야 한다. 프로젝트 생성 이후 gradle dependency는 다음과 같다. ◎build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.sp..
Querydsl 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크다. 문자열로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있다. 단순 문자열과 비교해서 Fluent API를 사용할 때의 장점은 다음과 같다. IDE의 코드 자동 완성 기능 사용 문법적으로 잘못된 쿼리를 허용하지 않음 도메인 타입과 프로퍼티를 안전하게 참조할 수 있음 도메인 타입의 리팩토링을 더 잘 할 수 있음 Querydsl의 최초 쿼리 언어 대상은 Hibernate의 HQL이었으나, 현재는 JPA, JDO, JDBC, Lucene, Hibernate Search, MongoDB, 콜렉션 그리고 RDFBean을 지원한다..
Thymeleaf에서는 크게 두가지 방법으로 다른 페이지를 삽입하는 기능을 구현할 수 있다. 크게 어려운 것은 없으니 바로 확인해보자. - th:fragment 우선 th:fragment 속성을 사용하여 다른 페이지에 삽입될 페이지나, 페이지 내부의 특정 부분을 다른 페이지에서 불러올 수 있도록 선언해줘야 한다. th:fragment를 특정 부분에 선언하여 그 부분만 따로 가져올 수 있으며, 2번과 같이 아예 선언하지 않고 body 부분만 작성하여 HTML 파일 자체를 fragment로 사용할 수 있다. ◎fragment1.html(특정 부분만 선언) part1 part2 part3 ◎fragment2.html Fragment2 File Fragment2 File Fragment2 File 이제 th:r..
직전 포스팅에서 Thymeleaf의 일반적인 구조를 간단하게 확인했다. 이번 포스팅은 Thymeleaf가 사용하는 조건문, 반복문 등과 같은 문법들과 사용할 수 있는 표현식에 대하여 정리하려고 한다. Thymeleaf-Reference: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#introducing-thymeleaf Tutorial: Using Thymeleaf 1 Introducing Thymeleaf 1.1 What is Thymeleaf? Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable o..
Spring-Boot에서는 JSP를 활용하여 View를 구성하는 것이 아닌, Thymeleaf를 사용한 view 구성을 권장하고 있다. 우선 Thymeleaf는 Web을 구성하기 위한 템플릿 엔진 중 하나이다. 템플릿 엔진이란 html(Markup)과 데이터를 결한한 결과물을 만들어 주는 도구이며, JSP 개발에서 이전에 사용했던 el 태그와 비슷하게 생각하면 편하다. Thymeleaf를 Spring-Boot 환경에서 사용하기 위해서는 다음과 같이 dependency를 추가해야 한다. 이후에 thymeleaf에서 숫자, 날짜 관련 포맷을 자동으로 바꿀 수 있도록, build.gradle에 다음 dependency를 추가한다. testImplementation('org.springframework.boot..
@Query 어노테이션은 쿼리 메서드처럼 메서드 명으로 어떤 기능을 지정하는 것이 아닌, SQL 구문을 직접 작성하여 원하는 작업을 처리할 수 있도록 해주는 어노테이션이다. @Query를 이용하여 할 수 있는 작업 1. 필요한 데이터만 선별적으로 추출할 수 있는 기능 2. 데이터베이스와 맞는 순수한 SQL을 사용 가능 3. insert, update, delete와 같은 DML 등을 처리 가능(단, @Modifying 과 함께 사용) @Query 는 JPQL로 객체 지향 쿼리이다. 즉, 테이블 대신 엔티티 클래스 & 속성명 대신 엔티티 클래스의 맴버 변수를 이용하여 쿼리를 작성해야 한다. 크게 어렵지는 않다. 바로 확인해보자. ◎Repository.java(interface) package com.exa..
쿼리 메서드는 말 그대로 메서드의 이름 자체가 하나의 쿼리문이 되는 기능이다. 해당 쿼리 메서드의 메서드 명을 지정할 때는 findBy, getBy 등으로 메서드의 이름을 시작하고 칼럼과 키워드를 연결하는 것으로 메서드를 작성한다. 메서드 이름에 대한 Reference는 다음 링크에서 확인할 수 있다. Keyword-Reference: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation Spring Data JPA - Reference Documentation Example 109. Using @Transactional at query methods @Transactional(..
지난 포스팅에서 JPA 인터페이스의 기초적인 개념과 사용 방법에 대하여 다뤘다. 이번 포스팅은 JPA를 Spring 환경에서 좀 더 쉽게 사용할 수 있도록 해주는 모듈인 Spring Data JPA에 대하여 다루려고 한다. Spring Data JPA는 Spring에서 제공하는 모듈 중 하나로, 개발자가 JPA를 더 쉽고 편하게 사용할 수 있도록 도와준다. 이는 JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로써 이루어진다. 즉, Spring-Boot 는 JPA 구현체 중 Hibernate를 이용하는데, Spring Data JPA 가 이 Hibernate를 쉽게 사용할 수 있도록 추가적인 API를 제공하는 것이다. Spring Data JPA 를 이용하여 개발 시, 필요한 코드..
ORM과 JPA ORM : 객체지향 개념을 이용하여 관계형 데이터베이스에 적용(보존)하는 기술.. 즉, 객체지향 을 관계형으로 매핑하는 개념.. 객체지향 구조와 관계형 데이터베이스와 유사 객체지향 데이터구조 => 클래스 데이터 => 멤버변수(데이터타입) 데이터 보관 => 인스턴스 관계형 데이터베이스 데이터구조 => 테이블 데이터 => 컬럼(데이터타입) 데이터 보관 => Row(레코드) 객체지향과 관계형데이터베이스의 차이점 : 객체지향 (행위)메서드 객체지향 : 데이터, 행위 관계형데이터베이스 : 데이터 결론 : ORM은 객체지향과 관계형 사이의 변환 기법을 의미... --------------------------------------------------------------------- JPA : O..
- 인천 구월동 이탈리안 맛집
- AsyncStorage
- redux
- 이탈리안 레스토랑
- react-native
- 파니노구스토
- 정보보안기사 #실기 #정리
- Async
- 맛집
- await
- Promise
- redux-thunk
- javascript
- 인천 구월동 맛집
- react
- Total
- Today
- Yesterday