
[Spring] @Transactional 에 대해서
Git - Spring @Transactional 에 대해서Notion - Spring @Transactional 에 대해서 이전에 Spring AOP와 Proxy를 공부한 이유는 사실 @Transactional에 대해서 자세히 다뤄보고 싶어였..
Git - Spring @Transactional 에 대해서Notion - Spring @Transactional 에 대해서 이전에 Spring AOP와 Proxy를 공부한 이유는 사실 @Transactional에 대해서 자세히 다뤄보고 싶어였..
웹 애플리케이션 웹 서버 HTTP를 기반으로 동작하는 서버 정적 리소스(HTML, CSS, JS)를 제공하고, 기타 부가기능을 제공한다. 클라이언트 (HTTP 요청) → 웹 서버 (HTTP 응답) ex_) NGINX, APACHE 웹 애플리케이션 서버 (WAS) HTTP를 기반으로 동작하는 서버 웹 서버 기능을 포함하며 프로그램 코드를 실행하여 애플리케이션 로직을 수행한다. 클라이언트 (HTTP 요청) → WAS (HTTP 응답) 동적 HTML, HTTP API(JSON), Servlet, JSP, SpringMVC ex_) Tomcat, Jetty, Undertow 차이점 웹 서버는 정적 리소스, WAS는 애플리케이션 로직을 실행하는 서버이다. 사실은 둘의 용어도 경계도 모호하기에 굳이 나누자면 WAS..
이번 글에서는 빈 스코프에 대해서 알아보려고 한다. 일단 빈 스코프라는 단어가 조금 생소하기도 해서 짚고 넘어가겠다. 빈 스코프는 빈이 존재할 수 있는 범위를 말한다. 저번 글에서는 빈의 생명주기를 살펴본 만큼 이번에는 어느 범위 까지 존재할 수 있는 가를 알아보려는 것이다. 빈 스코프의 종류로는 세가지가 있다. 싱글톤 전에도 설명했겠지만 싱글톤 빈은 객체가 1개로 유지된다. 스프링에서 기본적으로 적용되는 빈이기도 하며, 스프링 컨테이너의 시작부터 종료까지 1개의 객체로 유지되는 것이 특징이다. 프로토타입 프로토타입 빈은 싱글톤과는 반대로 빈이 요청될 때마다 초기화 메서드가 호출 된다. 프로토타입 빈의 스코프는 스프링 컨테이너가 시작 될 때 한 번 초기화가 되며, 그 뒤로는 관리를 받지않기에 ..
이번 글에서는 빈의 생명주기 콜백에 대해서 알아보려고 한다. 애플리케이션 구동 환경에서 원하는 객체를 제대로 사용하려면 생명주기에 대해서는 꼭 알아둬야 한다. 시작 지점에 DB 연결작업이나, 종료 지점에 연결 종료 작업 등은 코딩에서 필수이다. 이전에 안드로이드 앱 코딩 할 때도 생명주기는 매우 중요했었던 기억이 있다. 이번에는 스프링 빈에 대한 생명주기에 대해 자세히 알아 볼 것이다. 스프링 빈의 이벤트 생명주기 스프링 컨테이너 생성 => 스프링 빈 생성 => 의존관계 주입 => 초기화 콜백 => 사용 => 소멸 전 콜백 => 스프링 종료 우리가 스프링 빈을 제대로 사용하려면 의존관계 주입까지 끝난 상태여야만 사용할 수 있게 된다. 이런 상황을 우리는 콜백 메서드를 통해서 알 수 있고, 이 콜백..
이번 글에서는 의존관계 주입 방법에 대해서 더 자세히 다뤄볼 것이다. 지금까지의 예제에서는 빈 등록을 이용해서 단순히 실행만 시켜보는 구조였기에 객체간의 의존관계 주입이 없었다. 그렇기에 이번에는 의존관계에 대해 설명 못한 것들(종류, 좋은 방법, 활용하는 법 등)에 대해서 알아보려고 한다. 전 글들에서 언급했던 @Autowired 나 생성자 주입의 중요성과 Lombok도 이 곳에서 모두 다룰 것이다. 그럼 먼저 종류에 대해서 살펴보자. 생성자 주입 @Component public class StuService implements Service{ private final Repository repository; public StuService() {} @Autowired public StuServ..
이번 글은 싱글톤에 대해서 정리해보려고 한다. Spring에 대한 내용만은 아니지만 연관되어 이야기 할 수 있기에 정리해볼 것이다. 싱글톤 패턴이란 객체의 인스턴스가 딱 1번만 생성되는 패턴을 말한다. 예를 들어보자면, 어떤 프로그램 내에서 고객은 기능을 실행하기 위해 객체를 생성해야만 할 것이다. 그럴 때 같은 기능인데도 불구하고, 고객이 여러명이면 객체를 여러개 생성할 수 밖에 없을 것이다. 싱글톤 패턴은 이런 상황에서 객체를 1번만 생성하고 그 객체를 이용할 수 있게 하는 패턴인 것이다. 그렇다면 이 싱글톤 패턴은 어떻게 사용하는지 살펴보자. 이른 초기화 방법 public class SingletonService { private static final SingletonService in..
이번 글은 드디어 의존관계 주입을 하는 방법들에 대해서 알아보려고 한다. 첫번째 글에서는 xml 파일을 만들어 Spring을 통해 의존관계를 주입해주는 예를 들었었다. 그 방법은 이제 Spring의 기능을 직접 이용하지 않고, 파일을 직접 불러와서 해결했던 방법이었기에 생각보다 어려워 보였을 것이다. 하지만 이번에 소개할 방법을 Spring에서 제공하는 기능들을 통해서 의존관계 주입을 해보려고 한다. 일단 먼저 다형성만을 이용해 문제가 된 코드를 예로 들어보겠다. public class Main { public static void main(String[] args) { Repository repository = new StuRepository(); Student stu1 = new Student(1..
이번에는 좋은 객체지향 설계를 위한 5가지 원칙인 SOLID에 대해서 정리해보려고 한다. 원래는 의존성 주입하는 방식들에 대한 글을 쓰려했으나 이것을 먼저 정리하는 것이 좋을 것 같다고 생각되어 정리하게되었다. SOLID 원칙같은 경우에는 굳이 Spring이 아니더라도 좋은 객체지향 프로그램을 만들고 싶다면 지켜야 될 원칙이다. 어떤 내용인지 한 번 살펴보자. 1. SRP (Single Responsibility Principle, 단일 책임 원칙) 단일 책임 원칙이란 한 클래스는 하나의 책임만을 가져야 한다는 원칙이다. 예를 들어서 학생들을 저장하고 조회하는 기능을 만드려고 하는데, 이 클래스 내에서 프로그램의 실행까지 이루어진다면, 이는 한 클래스가 하나의 책임이 아닌 여러 책임을 가지게 되는 것..
이번에는 Spring에 대해서 정리해볼려고 한다. 스프링은 무엇일까? 스프링이란 자바 플랫폼을 위한 자바 기반 프레임워크로써 객체지향 언어인 자바의 특성을 살리는 것을 도와준다. 쉽게 생각하자면 그동안 배운 자바를 활용할 수 있는 확장 라이브러리이며, 좋은 객체지향 프로그램을 만들 수 있도록 도와준다는 것이다. 이러한 스프링은 여러 특징을 가지고 있다. 1. POJO 기반 POJO(Plain Old Java Object) 기반은 그대로 해석해보자면 오래된 자바 객체를 기반으로 한다는 뜻인데, 이는 스프링에서 객체간의 관계를 구성할 때 별도의 API를 사용하지 않고, 그냥 Java 코드만을 사용해서 객체를 구성할 수 있다는 것이다. 별도의 다른 라이브러리 등을 숙지하지 않아도 된다는 것이다. ..