본문 바로가기
반응형

Spring17

[Spring] The dependencies of some of the beans in the application context form a cycle 양방향 의존관계 오류 The dependencies of some of the beans in the application context form a cycle 양방향 의존관계 오류 스프링 프레임워크에서는 @Autowire 어노테이션을 이용해서 의존성 주입을 한다. 그런데 서로 다른 두 개의 클래스에서 서로를 의존성 주입하면 위와 같이 양방향 의존관계 오류가 발생한다. 위 이미지에서는 userService, reservationService 클래스가 서로를 의존성 주입하고 있어 오류가 발생했다. 이는 A를 변경하면 B가 영향을 받고, B를 변경하면 A가 영향을 받으므로 나쁜 설계라고 할 수 있다. 이를 해결하기 위해 A>B, B>A 의존 관계가 있다면 새로운 C를 만들어서 A>B>C로 의존관계를 갖도록 변경하여 문제를 해결 .. 2021. 8. 9.
[Spring] @Scheduled - 스프링에서 주기적인 작업을 진행하는 법 스프링에서는 @Scheduled 어노테이션을 사용해서 주기적인 작업을 진행할 수 있다. 예를 들어 매일 아침마다 미정산 고객에게 결제를 시도하기, 일요일마다 고객에서 push 메세지 보내기 등을 할 수 있다. 이 글에서는 Spring 4.0 버전에서 XML 파일 설정을 통해 @Scheduled 기능을 사용한다. 학습 목표 - 초기설정 - Fixed Rate - InitialDelay - Cron Expression - Parameterizing 초기 설정 1. 주기적인 작업을 수행할 클래스 생성 스프링 프로젝트에 다음과 같은 자바 코드를 추가한다. import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.sch.. 2021. 5. 21.
[JPA] JPA란? 이 글은 JPA의 개념, JPA가 등장한 배경, JPA의 장-단점에 대해서 다룹니다. 추가적으로 가장 많은 자바 개발자가 사용하는 프레임워크인 스프링에서 어떻게 JPA를 사용하는지 알아봅니다. 학습목표 - JPA의 등장과 개념 - Spring Data JPA JPA의 등장과 개념 기존에 스프링에서는 관계형 데이터베이스(이하 RDBS)를 다룰 때 iBatis, MyBatis와 같이 쿼리를 매핑하는 SQL Mapper를 많이 사용했다. 하지만 이러한 기술은 객체 모델링보다 테이블 모델링에만 집중하게 만들고, 객체를 단순히 테이블에 맞추어 데이터를 전달하는 역할만 할 수 있다는 단점이 있었다. RDBS는 데이터를 어떻게 저장할지에 초점이 맞춰진 기술이다. 반대로 객체지향 프로그래밍 언어는 메시지를 기반으로 기.. 2021. 4. 20.
[Spring] 오류 해결: org.hibernate.AnnotationException: No identifier specified for entity 문제 스프링에서 Entity 클래스를 다음과 같이 작성했다. @Entity public class User { @Id private Long id; private String firstName; private int age; private String email; } 작성하는 중 분명 @Id 어노테이션을 갖는 필드가 존재함에도 다음과 같은 에러를 뿜으며 애플리케이션 실행이 중지되었다. 해결 잘못된 패키지에서 Id 클래스를 import 하고 있었다. 다음과 같이 변경하여 해결할 수 있었다. import org.springframework.data.annotation.Id; 변경 -> import javax.persistence.Id; 2021. 4. 15.
[Spring] MVC 프레임워크를 따라 만들어보자. MVC 프레임워크 개발하기MVC 프레임워크를 따라 만들어보자. 이글은 Model1 구조와 Model2 구조를 예제 코드로 구현한 이전 글(scshim.tistory.com/271)의 코드를 개선하여 프로그램을 만든다. 이전 글(scshim.tistory.com/271)에서는 Model2 아키텍처를 간단히 만들기 위해 DispatcherServlet 하나로 Controller 기능을 구현했다. 하지만 이것은 클라이언트의 모든 요청을 하나의 서블릿이 처리한다는 문제점이 있다. 따라서 서비스가 복잡해지면, 수많은 분기 처리 로직으로 개발과 유지보수가 어려워 진다. 이러한 문제를 Spring(MVC)나 Structs 같은 MVC 프레임워크에서 제공하는 Controller를 사용하여 해결할 수 있다. MVC 프레.. 2021. 2. 25.
[Spring] Ioc, DI, ApplicationContext, Bean, BeanFactory 개념 [Spring] Ioc, DI, ApplicationContext, Bean, BeanFactory Ioc(Inversion of control)란? · Ioc(제어의 역전)이란 프로그램의 제어 흐름 구조가 뒤바뀌는 것이다. 일반적인 프로그램 흐름 · 일반적인 프로그램의 흐름은 main() 메소드와 같이 프로그램이 시작되는 지점에서 사용할 오브젝트를 결정하고, 결정한 오브젝트를 생성하고, 만들어진 오브젝트에 있는 메소드를 호출하고, 그 오브젝트 메소드 안에서 다음에 사용할 것을 결정하고 호출하는 식의 작업이 반복된다. Ioc의 프로그램 흐름 · Ioc에서는 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하거나, 생성하지 않는다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문이다. 스프링에서는.. 2021. 2. 19.
반응형