728x90

Spring 34

4) Querydsl 설정

Querydsl 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. JPA 설정에 이어서 편리한 기능을 제공하는 Querydsl 설정을 추가한다. 우선, build.gradle 에 라이브러리를 추가 후, gradle을 새로고침을 한다. //Querydsl 버전 관련 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { ... //Querydsl 관련 추가 id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' ... } dependencies { ... //Querydsl 관련 실제 lib 추가 implementation "com..

3) JPA 다중 스키마 설정

JPA 다중 스키마 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. JPA 구조 Persistence: EntityManagerFactory 인스턴스를 얻기 위한 정적 메서드를 포함하는 클래스이다. EntityManagerFactory: EntityManager의 팩토리 클래스입니다. EntityManager의 여러 인스턴스를 생성하고 관리한다. EntityManager: 개체에 대한 지속성 작업을 제어하는 인터페이스이다. 쿼리 인스턴스에서 작동합니다. Entity 엔터티는 데이터베이스에 레코드로 저장되는 persistence 개체입니다. Persistence Unit: 모든 엔터티 클래스 집합을 정의합니다. 애플리케이션에..

2) MyBatis 3.0 다중 스키마 설정

MyBatis 3.0 다중 스키마 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. 우리가 사용하는 Spring와 하이버네이트에서 제공해주는 @Transactional는 알아서 트랜잭션을 관리해주는 마법의 키워드가 아니다. 추상화해서 사용할 뿐이지 실제는 위와같이 JDBC 트랜잭션을 사용하여 구현한다. DAO에서 Database에 접근하기 위해서는 Spring-jdbc가 필요하고, 이는 DataSource 정보로부터 구할 수 있다. 또한, 스프링은 트랜잭션 처리를 TranscationManager 객체를 통해 처리한다. 구현체는 갈아끼울 수 있게 인터페이스인 PlatformTranscationManager가 주입되어 사용된다..

1) 스프링 부트 프로젝트 생성

스프링 부트 프로젝트 생성 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. 프로젝트 개발을 위해 intelliJ에서 새 프로젝트 만들기를 클릭합니다. 다음 버튼을 클릭 (comment - 현재 기준 Spring Boot 3.x.x 버전은 아직 안정화되지 못했다고 판단하여 2점대 버전중 가장 최신 버전으로 프로젝트를 진행하도록 하였습니다) 이번에는 2.7.9 버전을 선택하고 생성 버튼을 클릭합니다. 루트 디렉터리에서 build.gradle을 더블 클릭합니다. build.gradle 파일에 아래와 같이 추가합니다. plugins { id 'java' id 'org.springframework.boot' version '2.7.4' ..

@Controller와 @RestController의 차이점

@Controller와 @RestController의 차이 1. @Controller 이해 Controller로 View 반환하기 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다. HandlerMapping을 통해 요청을 Controller로 위임한다. Controller는 요청을 처리한 후에 ViewName을 반환한다. DispatcherServlet은 ViewResolver를 통해 View..

Spring 2023.03.05

PointCut 표현식 정리

PointCut 표현식 포인트컷에는 다양한 명시자를 이용할 수 있습니다. execution Advice를 적용할 메서드를 명시할 때 사용합니다. within 특정 타입에 속하는 메서드를 JoinPoint로 설정되도록 명시할 때 사용합니다. bean 스프링 버전 2.5 버전부터 지원하기 시작했으며, 스프링 빈을 이용하여 JoinPoint를 설정합니다. execution 명시자 execution([수식어] 리턴타입 [클래스이름].이름(파라미터) 수식어 : public, private 등 수식어를 명시합니다. (생략 가능) 리턴타입 : 리턴 타입을 명시합니다. 클래스이름 및 이름 : 클래스이름과 메서드 이름을 명시합니다. (클래스 이름은 풀 패키지명으로 명시해야합니다. 생략도 가능) 파라미터 : 메서드의 파라..

Spring 2023.03.03

(스프링 고급편) 스프링 AOP

스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때..

Spring 2023.03.02

CustomAuthenticationSuccessHandler와 CustomAuthenticationFailureHandler

: Security에서 지원하는 인증성공, 인증실패 핸들러를 상속한 클래스를 직접 커스텀하여 사용해보자. 1. 인증성공 핸들러 커스텀 2. 인증실패 핸들러 커스텀 3. config 설정 4. 익명클래스로 처리하는 방법 1. 인증성공 핸들러 커스텀 1. SimpleUrlAuthenticationSuccessHandler를 상속한 커스텀 클래스 CustomAuthenticationSuccessHandler를 만듭니다. 2. requestCache와 RedirectStragey를 사용하여 사용자가 인증 요청 성공시 이전에 접근하려 했던 자원(리소스)의 경로로 바로 보내기 위해서 설정해줍니다. 이전의 접근하려 했던 자원(리소스)가 없는 경우 null을 반환하도록 하여 setDefaultTargetUrl에 설정해..

Spring/Security 2023.02.18

(SpringSecurity) UserDetailsServices 활용

UserDetailsServices 활용 JDBC를 이용하는 방식으로도 DB를 처리해서 사용할수 있지만, 여러 정보들중 제한적인 내용만 이용 한다는 단점이 존재 이러한 문제를 해결하기위해 UserDetailsServices 인터페이스를 구현하는 방식을 이용하는것이 좋다. ( 원하는 객체를 인증과 권한 체크에 활용 할수 있기에 많이 사용된다) UserDetailsServices 인터페이스는 단 하나의 메서드만 존재한다. 가장 일반적으로 많이 사용되는 방법은 하위 클래스 중에서 org.springframework.security.core.userdetails.User 클래스 상속 하는형태이다. 커스텀 UserDetailsService를 이용하는 방식을 이용하기 위해선, MYbatis를 이용하는 MemberM..

Spring/Security 2023.02.14

SpringBoot + Mybatis 연동하기

SpringBoot + Mybatis 연동 1. MyBatis 라이브러리 Gradle 의존성 설정MyBatis 라이브러리 Gradle 의존성 설정을 위해 build.gradle 파일을 열어 줍니다. 그럼 dependencies라는 부분에 아래와 같이 추가합니다. // MyBatis 라이브러리 의존성 추가implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'runtimeOnly 'mysql:mysql-connector-java:8.0.25'  의존성 설정을 추가했다면 Gradle 싱크를 맞혀 줍니다. 아래 버튼을 통해 Gradle 싱크를 할 수 있습니다. 여기까지 완료 후 서버를 시작하면 아마 서버에서 오류가 발생합니다. 경고N..

Spring 2023.01.12
728x90