반응형

Spring 22

[Spring] AOP 구현 - Annotation

지난 시간에는 AOP를 xml 스키마 기반으로 구현해봤습니다. 이번에는 @Aspect 어노테이션을 통해 구현해보도록 하겠습니다. 전의 소스를 대부분 재활용 했습니다. public interface Attendance { public void Attendance(String name); } public class Student implements Attendance { @Override public void Attendance(String name) { System.out.println(name + " 출석"); } } public class Teacher implements Attendance { @Override public void Attendance (String name) { System.out...

Spring 2020.07.09

[Spring] ORM, JPA, Hibernate, Spring Data JPA의 개념

Persistence(영속성) 프로세스가 생성했지만 별개로 유지되는 상태의 특징 즉, 프로그램이 종료되더라도 데이터가 사라지지 않는 특성을 뜻합니다. Persistence Layer Layered Architecture의 구성요소 중 하나입니다. 영구 데이터를 객체화 하며, 영구 저장소에 데이터를 저장, 수정, 삭제하는 계층입니다. 즉, DB, File에 데이터를 CRUD하는 계층입니다. JDBC를 이용하여 직접 구현할 수 있지만 간단하게 Persistence Framework를 이용하여 개발을 합니다. (JDO, Hiberante, Mybatis 등) Layered Architecture Persistence Framework 데이터의 CRUD를 다루는 클래스 및 설정 파일등의 집합입니다. JDBC 프..

Spring 2020.07.08

[Spring] AOP 구현 (XML)

AOP 구현 스프링 AOP를 구현하는 방법에는 두가지가 있습니다. XML 스키마 기반의 자바 POJO 클래스를 이용하여 구현 @Aspect 어노테이션 이용하여 구현 POJO(Plain Old Java Object) 순수한 자바 객체를 의미합니다. 즉, 특정 기술에 종속적이지 않은 자바 객체라는 의미입니다. XML과 어노테이션을 이용해 구현한다는 차이점이 있지만 두 방법 모두 큰 틀은 같습니다. 공통 기능을 제공하는 Aspect를 구현 Aspect를 어디에(PointCut) 적용할지 설정 즉, Advice를 설정 의존 설정 Maven org.aspectj aspectjweaver 1.9.2 Gradle compile group: 'org.aspectj', name: 'aspectjweaver', versi..

Spring 2020.07.06

[Spring] AOP의 개념

AOP Aspect Oriented Programming의 약자로, 관점(관심,기능) 지향 프로그램이란 뜻입니다. 공통 기능과 핵심 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법입니다. AOP의 기본 개념은 핵심 기능에 공통 기능을 삽입하는 것입니다. 즉, 핵심 기능의 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것이 AOP라고 할 수 있습니다. 핵심 기능에 공통 기능을 삽입하기 위한 방법으로는 크게 세 가지가 있습니다. 컴파일 시점에 코드에 공통 기능 추가 클래스 로딩 시점의 바이트 코드에 공통 기능 추가 런타임에 프록시 객체를 생성해서 공통 기능 추가 스프링이 제공하는 AOP방식은 프록시를 이용하는 세 번째 방식입니다.(두 번째 방식을 일부 지원하지만 주로 사용되지는 않습니다.) 스..

Spring 2020.07.06

[Spring] @Autowired @Resource @Inject @Qualifier

@Autowired, @Resource, @Inject의 역할 세 어노테이션의 공통점은 자동 의존 주입(DI)입니다. @Autowired, @Resource, @Inject의 차이점 @Autowired @Resource @Inject 지원 Spring Framework에서 지원 Java에서 지원 Java에서 지원 연결 순서 1. 타입으로 연결 1. 이름으로 연결 1. 타입으로 연결 2. 이름으로 연결 2. 타입으로 연결 2. 이름으로 연결 위치 필드,생성자,setter메서드O 생성자X, 필드,setter메서드O 필드,생성자,setter메서드,일반메서드O @Autowired 타입으로 자동 의존 주입을 합니다. Spring Framework에 종속적입니다. @Qualifier어노테이션을 사용하여 강제연결을 ..

Spring 2020.07.05

[IntelliJ] release version 5 not supported 오류

문제점 IntelliJ + Spring MVC + Maven 프로젝트에서 컴파일 시에 release version 5 not supported 가 발생했습니다. 원인 Project Structure > Project Settings > Modules의 Sources탭 > Language Level이 5로 설정되어있었습니다. Preference > Build, Execution, Deployment > Compiler > Java Compiler에 모듈 타깃이 1.5로 설정되어있었습니다. 해결방법 Language Level을 사용하고 있는 자바 버전으로 변경합니다. Java Compiler의 모듈 타겟을 사용하고 있는 자바 버전으로 변경합니다. 참고 해결방법 2를 먼저 하고 1번 방법을 실행했었을 때 Ja..

Spring 2020.06.27

IntelliJ에서 SpringMVC + Maven + Tomcat

Create New Project버튼을 클릭합니다. Maven을 선택합니다. 프로젝트 정보를 입력합니다. 프로젝트가 생성되면 프로젝트를 우클릭하여 Add Framework Support...을 클릭합니다. Web Application을 체크합니다. Spring MVC를 체크합니다. IntelliJ에서 제공하는 기본적인 구조입니다. ⌘(Command) + ; 단축키를 눌러 Project Structure 설정창을 띄운 후 Artifacts 탭을 클릭합니다. 우측의 Available Elements의 요소들을 더블클릭하여 좌측으로 이동시킵니다. 상단의 Add Configuration...를 클릭합니다. Run/Debug Configuration창 좌측 상단의 + 버튼을 클릭, Tomcat Server > L..

Spring 2020.06.26

Spring Validator를 이용하여 유효성 검사

Spring에서 유효성을 검사하는 방법 Spring Validator 구현 Bean Validation Bean Validation 1.0(JSR-303) Bean Validation 1.1(JSR-349) Bean Validation 2.0(JSR-380) 두 가지 방법 중 Validator 인터페이스를 구현하여 유효성 검사하는 방법을 알아보겠습니다. Validator 인터페이스 org.springframework.validation.Validator public class Person { private String name; private int age; // the usual getters and setters... } public class PersonValidator implements Vali..

Spring 2020.06.23