BackEnd/Spring

1. 스프링이란? 스프링은 스프링 하나가 아니라 여러 기술들의 모임이다. 핵심이 되는 스프링 프레임워크, 여러 기술을 편리하게 사용하도록 도와주는 스프링 부트 이외에도 스프링 데이터, 스프링 세션, 스프링 시큐리티 등 여러 가지가 존재한다. 스프링은 아래와 같이 문맥에 따라 다른 의미를 나타내기도 한다. 스프링 DI 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 기술들 2. 스프링 프레임워크 가장 중요한 것은 스프링 프레임워크다. 스프링 프레임워크는 여러 기술들의 집합이다. 스프링 DI 컨테이너, AOP, 이벤트 등의 핵심 기술, 스프링 MVC 등의 웹 기술, 트랜잭션, JDBC, ORM 지원 등 데이터 접근 기술, 캐시, 이메일, 원격 접근 등의 기술 통합, ..
1. EJB의 사용 2000년대 초반에는 자바 진영의 표준 기술 중에 EJB(Enterprise Java Beans)라는 것이 있었다. 지금으로 따지면 spring과 jpa를 합쳐놓은 세트였고, 자바 표준 기술이었기 때문에 금융권 등에서 많이 사용했다. EJB는 트랜잭션 관리, 컨테이너 지원 등 여러 장점이 있었지만 너무 복잡하고 느리기까지 했다. 또 EJB에 의존적으로 구현하다보니 코드도 복잡해지고 어떻게 동작하는지도 이해하기 힘들었다. 2. 스프링 및 하이버네이트의 등장 EJB를 사용하던 개발자 중 한 명인 로드 존슨(Rod Johnson)은 EJB를 비판하며 어떤 식으로 단순하게 코드를 작성할 수 있는지 책을 내게 된다. 이것이 미래의 스프링이 된다. 그리고 EJB 엔티티빈이라는 ORM 기술을 대체..
1. 문제 상황 "ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed"는 스프링 설정 파일 구성 문제로 인해 발생하는 에러다. 내 경우 tomcat 실행 후 spring 컨테이너가 처음 구동될 때 해당 문제가 발생했다. 2. 해결 방법 내 경우 web.xml에 applicationContext.xml 파일의 설정이 잘 되어있지 않아 발생했다. 수정한 web.xml은 아래와 같이 applicationContext.xml 파일과 dispatcher-servlet.xml 파일 두 스프링 설정 파일에 대한 경로를 잘 설정하고 있다. (즉, 내 경우 applicationContext.xml의 경로를 추가하지..
1. p Namespace란? p Namespace를 사용하면 Setter Injection을 좀 더 효율적으로 DI를 처리할 수 있다. p Namespace는 아래와 같이 Namespace만 선언하면 사용할 수 있다. xmlns:p="http://www.springframework.org/schema/p" 위와 같이 p Namespace를 선언하면 아래와 같이 참조형 변수에 참조할 객체를 할당할 수 있다. p:(Variable Name)-ref="참조할 객체의 이름 혹은 아이디" 기본 데이터 타입은 아래와 같이 직접 값을 설정할 수 있다. p:(Variable Name)="설정할 값" 2. 사용 예시 Setter Injection을 p Namespace를 활용하지 않으면 아래와 같이 태그를 사용해야 한..
1. Setter Injection이란? Construction Injection은 생성자를 사용해 의존성을 처리했다. Setter Injection은 Setter 메소드를 통해 DI를 처리한다. Construction Injection와 Setter Injection 중 무엇을 사용하든 상관은 없지만 코딩 컨벤션에 따라 한 가지로 통일해서 사용한다. 대부분 Setter Injection을 사용한다고 한다. 2. Setter Injection 기본 사용법 다음과 같이 Car 클래스가 구현되었다. # Car 클래스 public class Car { private Engine engine; private int seats; public Car() { System.out.println("기본 생성자로 Car ..
1. 초기화 할 멤버가 하나인 경우 Construction Injection을 통해 초기화할 멤버가 하나인 경우는 아래 방식을 통해 수행하면 된다. [Spring] Constructor Injection 기본 사용법 1. Constructor Injection 스프링 컨테이너는 bean 객체 생성시 Default 생성자를 호출하여 객체를 생성한다. 이때 기본 생성자가 아닌 매개변수를 가지는 생성자를 통해 호출하도록 할 수 있는데 이 기능 ngp9440.tistory.com 2. 초기화 할 멤버가 여러 개인 경우 만약 초기화해야할 멤버가 여러 개라면 먼저 생성자에서 해당 하는 매개변수를 모두 받아와야 한다. 만약 Car 클래스가 있다면 아래와 같이 Engine 객체와 int형 변수 seats를 가질 수 있..
1. 의존관계 변경 의존 관계에 있는 객체를 다른 객체로 교체해야 하는 경우가 있을 수 있다. 예를 들어, 자동차의 엔진을 A에서 B로 갈아야하는 경우가 이에 해당한다. 만약 Spring을 사용하지 않고 의존관계에 있는 객체를 변경하려면 Java 코드를 직접 수정해야 한다. 하지만 Spring을 사용하면 그럴 필요 없이 xml 파일만 수정하면 교체가 가능하다. 먼저 Engine 인터페이스, EngineA, EngineB 클래스는 다음과 같다. # Engine 인터페이스 public interface Engine { void sound(); } # EngineA 클래스 public class EngineA implements Engine { public EngineA() { System.out.printl..
1. Constructor Injection 스프링 컨테이너는 bean 객체 생성시 Default 생성자를 호출하여 객체를 생성한다. 이때 기본 생성자가 아닌 매개변수를 가지는 생성자를 통해 호출하도록 할 수 있는데 이 기능을 사용하여 Construction Injection을 처리할 수 있다. 먼저 아래와 같이 Car, Engine, Main 클래스가 있다고 하자. # Engine 클래스 public class Engine { public Engine() { System.out.println("Engine 생성"); } public void sound() { System.out.println("Brrrrrrr!!!"); } } # Car 클래스 public class Car { private Engin..
코딩마루
'BackEnd/Spring' 카테고리의 글 목록 (5 Page)