spring 18

@Transactional은 어떻게 쓰는것일까?

목표 : @Transactional의 사용법을 설명할 수 있다. Transaction을 유지하는 방법 정도로 알고 있는 Annotation에서 벗어나서, 조금 더 자세히 알아보도록 하자. 그동안은 어떻게 써왔는가? 일단 로직이 길 수 밖에 없는 상황에 써왔다. 다시 말해 쓸 수 밖에 없었다. Transactional을 통해 묶어주어야, 2개 이상의 쿼리에 대해 DB Commit 과 Rolback이 가능하도록 관리된다고 알고 있었고, 연동 구간이 길 수 밖에 없는 로직, 예를 들면 기기제어, 각종 로그인, UI를 통한 컨텐츠 변경 등의 작업이 필요할 때마다 Service에서 사용하는 Method에 @Transactional를 설정하여 처리했다. 과연 난 잘 써왔을까? Transaction Transacti..

Framework/Spring 2022.08.21

[Spring] DispatcherServlet이 뭘까?

목표 : DispatcherServlet에 대해 설명할 수 있다. SpringMVC에 대해 처음 설명하는 사항이 DispatcherServlet이다. 대체 무엇이길래 제일 처음부터 설명하는 것일까? DispatcherServlet SpringMVC는 Spring Framework에 최초부터 들어있던 Servlet API 기반의 웹 프레임워크다. 우선 한번 복습해보자. Servlet Servlet : 정적인 HTML의 한계를 극복하고 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양 Servlet Container : Servlet Interface의 구현체로서, Servlet의 LifeCycle(Init, Destroy, Service)을 구현하고 있으며 구동 환경을 제공하여 S..

Framework/Spring 2022.08.16

[Spring] Bean의 주입은 어떻게 하는게 좋을까?

목표 : Spring Bean 생성자 주입이 많은 이유를 설명할 수 있다. 이전 포스팅으로 Bean 주입에 대해 설명한 적이 있다. 잠깐 다시 정리해보자. Bean의 주입 방법 Bean의 주입 방법은 크게 3가지가 있다. 생성자 주입, Setter를 통한 주입은 앞선 포스팅으로 보았고, 필드를 통한 주입까지 3가지가 있다 Setter를 통한 주입 package com.example.demo.di; import lombok.Data; @Data public class MyBean { private int msg; } package com.example.demo.di; import lombok.Data; import org.springframework.beans.factory.annotation.Autowi..

Framework/Spring 2022.08.14

[Spring] Spring에서 AOP는 어떻게 사용할까?

목표 : Spring에서 AOP를 사용할 수 있다. 앞서, AOP가 무엇인지에 대해 알아보았다. 이제 Spring에서 AOP를 어떻게 쓸 수 있을지 알아보자. Aspect Oriented Programming with Spring 다음 링크에서 Spring에서 AOP에 대한 적용은 다음과 같이 할 수 있다고 한다. Spring provides simple and powerful ways of writing custom aspects by using either a schema-based approach or the @AspectJ annotation style. Both of these styles offer fully typed advice and use of the AspectJ pointcut la..

Framework/Spring 2022.08.13

[Spring] AOP는 뭘까?

목표 : AOP에 대해 설명 할 수 있다. Spring에서는 IoC Container 기능과 더불어, AOP를 아주 중요하게 생각한다. 그럼, AOP가 무엇인지부터 알아가보도록 하자. Aspect Oriented Programming (AOP) 다음 링크를 보면, AOP에 대해 다음과 같이 설명하고 있다. 컴퓨팅에서 관점 지향 프로그래밍(aspect-oriented programming, AOP)은 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 어떠한 language가 만들어 지기 전에, OOP, Functional Programming 같은 패러다임이 먼저 존재한다. 이 패러다임을 기반으로 특정 Language가 만들..

Framework/Spring 2022.08.13

[Spring] Validation은 어떻게 확인할까?

목표 : 스프링에서 Validation을 확인할 수 있다. Validator Spring은 Validator라는 Interface를 통해, Validation을 제공하고 있다. public class Person { private String name; private int age; // the usual getters and setters... } 위와 같은 클래스가 존재한다고 하자. 그리고, 위 Person 클래스의 필드에 대해, validation을 제공하는 클래스를 만들어볼 것이다. public class PersonValidator implements Validator { /** * This Validator validates only Person instances */ public boolea..

Framework/Spring 2022.08.12

[Spring] Resource는 어떻게 처리할까?

목표 : 스프링에서 Resource 처리를 구현할 수 있다. Resource IoC Container에 대한 챕터를 마무리하고, Resource 챕터를 확인해보자. 먼저 Resource가 무엇인지 이해가 필요할 것 같다. intellij로 스프링 프로젝트를 시작하면, resources 폴더가 생기게 된다. Spring에서 java 뿐 아니라, 외부의 파일들을 읽어야 하는 경우가 생긴다. (앞서 배웠던 properties도 외부 파일 중 하나다.) 이런 외부 파일들을 읽어드리거나, URL을 통해 가져와서 프로그래밍에 활용을 하는데, Spring에서는 Resource라는 Interface를 통해, 추상화를 해주었다. Spring이 없으면, 어떻게 할 수 있었을까? public static void main(..

Framework/Spring 2022.08.11

[Spring] 환경설정은 어떻게 할 수 있을까?

목표 : 스프링에서 Environment 설정을 할 수 있다. 이번에 진행하고자 하는 사항은 Environment 설정이다. 조금 더 구체적으로 Environment Abstraction이며, 그 위치는 다음과 같다. Environment Interface Environment Abstraction이라는 단어들로 알 수 있듯, 환경에 대한 추상화, 즉, Spring에서는 Environment Interface를 제공한다. 주로, Environment Interface는 profiles 나 properties 처럼, 프로그램의 환경 변수 그리고, Applcation의 프로필을 관리할 때 사용하게 된다. 다음 Environment Interface 문서를 보도록 하자. 모든 것들의 Super Interfac..

Framework/Spring 2022.08.10

[Spring] Classpath와 Component가 뭘까?

목표 : 스프링의 Classpath와 Component를 설명할 수 있다. 현재 진행하고 있는 문서의 위치는 다음과 같다. 조금 생소하다면 생소하고, 많이 봤으면서도 설명하기 어려웠던 개념이 나오기에, 잘 정리하도록 해보자. Classpath 먼저, Classpath가 무엇인지 부터 알도록 하자. java는 빌드 후에 실행파일이 나오게 된다. (javac 로 컴파일 이후에 Java Byte Code인(JVM이 이해할 수 있는 언어) .class 파일이 나오는 것 정도는 알아야 한다) 즉, Classpath는 이 컴파일된 파일의 경로를 가리키게 된다. 우리가 흔히, Spring을 빌드하고 나면, target 폴더에 결과물이 남는데, 이 때 classes 폴더가 바로 해당 파일의 경로가 될 것이다. Clas..

Framework/Spring 2022.08.02

[Spring] Annotation Configuration은 어떻게 할까?

목표 : Spring의 Anntation 설정을 할 수 있다. 이번엔 계속 XML에서 설정해온 Configuration 정보들을 Annotation으로 어떻게 할 수 있을지 알아볼 예정이다. 해당 링크를 중심으로 하나씩 알아가 보도록 하자. Annotation-based Container Configuration 먼저 Annotation이 XML보다 Spring configuration하는 것에 있어서 더 좋은가? 에 대한 질문으로 시작한다. 답은 역시나 "상황에 따라 다르다" 이다. XML 방식은 소스 코드 외, XML만 보고도 설정을 알 수 있다. 즉, 설정과 소스 코드의 분리가 가능하다. 그러나, 프로젝트가 커질수록 XML 관리가 복잡해지기 시작한다. Annotation은 더 짧고 간결한 구성이 가..

Framework/Spring 2022.08.01