반응형

Spring 20

Controller vs Handler

1. 컨트롤러 (Controller)컨트롤러는 클라이언트의 요청을 받아 비즈니스 로직을 처리하고, 그 결과를 뷰(View)에 전달하는 역할을 하는 스프링 컴포넌트입니다. 스프링 MVC(Model-View-Controller) 구조에서 중요한 요소로, @Controller 어노테이션을 통해 클래스를 컨트롤러로 정의합니다.주요 기능요청 매핑 (Request Mapping): 특정 URL 요청을 매핑하여 적절한 메서드를 실행합니다. 예를 들어, /users로 들어오는 요청을 getUsers() 메서드로 연결할 수 있습니다.뷰 반환 (View Return): 비즈니스 로직 수행 후 결과를 모델(Model)에 담고, 반환할 뷰의 이름을 리턴합니다.모델 관리 (Model Management): 처리된 데이터를 Mo..

Spring 2024.08.29

spring - handler(핸들러)란 무엇인가?

handler(핸들러)는 "요청을 처리하는 자" 라는 의미로, 웹 애플리케이션이 클라이언트로부터 받은 HTTP 요청을 처리할 수 있는 모든 객체를 의미합니다. 쉽게 말해, 핸들러는 사용자가 웹 브라우저에서 요청을 보냈을 때, 그 요청을 받아 처리하는 역할을 맡는 "사람"이라고 생각할 수 있어요. spring 핸들러의 역할요청을 받는다: 클라이언트(예: 웹 브라우저)가 특정 페이지에 접근하거나 데이터를 서버에 요청할 때, 서버는 요청을 받아야 합니다.요청을 분석하고 처리한다: 핸들러는 요청의 내용을 확인하고, 그에 맞는 작업을 수행합니다. 예를 들어, 사용자가 로그인을 시도한다면, 핸들러는 해당 로그인 정보를 확인하고, 맞는지 검증하는 작업을 진행합니다.응답을 생성한다: 요청이 처리된 후, 핸들러는 사용자..

Spring 2024.08.29

JPA Could not write JSON: failed to lazily initialize a collection of role 에러 해결

개발 중, Database 설정을 통해 DB 값을 가져오는 과정에서 다음과 같은 오류를 경험했습니다에러내용 :JPA Could not write JSON: failed to lazily initialize a collection of role상황 설명저는 두 개의 Database를 연결하여 사용하는 환경에서 작업하고 있었습니다. 그런데 Sub Database의 값을 가져오는 과정에서 위와 같은 오류가 발생했습니다.JPA를 사용중이었는데 연결된 table 의 정보를 가지고 올 때 @OneToMany(fetch = FetchType.LAZY) 옵션이 문제가 되었습니다.추측 원인개인적으로는 Sub Database를 사용하는 경우, EntityManager가 유지되지 않아 LAZY 옵션이 유효하지 않았던 것으로..

Spring 2024.04.04

Spring database config bean 다중 설정 예제 by JPA

database와의 연결 설정 파일을 다중으로 사용해야할 경우, main으로 사용 할 config를 지정해주어야한다. @Praimary 어노테이션을 통해서 의존성 주입시 최우선 bean임을 명시해줄 수 있다 @Configuration @EnableJpaRepositories @EnableTransactionManagement class ApplicationConfig { @Bean @Praimary // 해당 어노테이션을 통해서 메인 설정임을 지정해주어야함 public DataSource dataSource() { EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); return builder.setType(EmbeddedDatabaseTyp..

Spring 2024.04.04

Spring AOP, AOP 용어 정리

AOP란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. (여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.) 객체지향의 기본원칙을 적용하여도 핵심기능에서 부가기능을 분리해서 모듈화하는 것은 매우 어렵다. AOP는 애플리케이션에서의 관심사의 분리(기능의 분리), 핵심적인 기능에서 부가적인 기능을 분리한다. 분리한 부가기능을 에스펙트(Aspect)라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법이다. OOP를 적용하여도 핵심기능에서 부가기능을 쉽게 분리된 모듈로 작성하기 어려운..

Spring 2022.07.05

[Spring Boot] @SpringBootApplication

스프링부트 메인 클래스에는 @SpringBootApplication 라는 어노테이션이 붙어있다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 메인 클래스에 붙어 있는 @SpringBootApplication은 크게 3가지가 합쳐진 것이라고 생각할 수 있다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration 스프링 부트 어플리케이션은 Bean을 2번 등록한다. 처음에 ComponentScan으로 등록하고, 그 후에 EnableAuto..

Spring 2022.06.30

@WebServlet, @Controller 의 차이

@WebServlet javax.servlet.annotation@Target(value=TYPE) @Retention(value=RUNTIME) @Documented public @interface WebServlet 서블릿을 선언할 때 사용되는 Annotation 이 Annotation이 표시된 클래스는 Servlet Container에 의해 처리된다. 속성 값을 통해 해당 Servlet과 매핑될 URL 패턴을 지정한다. @Controller org.springframework.stereotype@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Component public @interface Controller 이 Annotation이 표시된 ..

Spring 2022.06.01

스프링 컨테이너란?

#스프링 컨테이너의 역할 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 합니다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부릅니다. 스프링 컨테이너로 인해서 IoC와 DI의 원리를 적용할 수 있습니다. 개발자는 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시킬 수 있는데, 스프링 컨테이너가 이 역할을 대신해 줍니다. 즉, 제어 흐름을 외부에서 관리 할 수 있게 합니다. 또한, 객체들 간의 의존 관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 줍니다. #스프링 컨테이너란? ApplicationContext 를 스프링 컨테이너라고 한다. 더 정확하게는 BeanFactory , Applicat..

Spring 2022.04.26

Spring을 사용하는 이유 ( 객체 지향의 원칙 )

Spring Core spring 개발 이유 EJB(Enterprise Java Bean) 기존 사용 개발툴을 사용하던 사람들이 너무 불편함을 호소했고, 그중 로드 존슨이라는 사람이 EJB의 문제점을 지적하면서 개발되기 시작했다. EJB 컨테이너를 활용해서 객체지향 설계를 하게 될 경우, 서비스 로직을 구현하는 영역보다 객체지향언어의 원칙을 지키기 위한 로직이 더 많아지는 경우가 다반사였다. 이를 좀 더 쉽게 활용하기 위해서 스프링이 개발되었다.실제로 프레임워크의 이름이 spring인 이유는 EJB를 사용하던 시절(겨울)을 지나서 새로운 시대(봄)이 오기를 바라는 마음으로 명명 spring EJB 컨테이너 대체. 보다 간결하고 사용성이 좋다(단순했다). 현재 사실상 표준 기술 스프링은 자바 언어 기반의 ..

Spring 2022.04.12
반응형