본문 바로가기

spring14

[Spring] 메시지, 국제화 1. 개요 개발을 하다 보면, 전반적으로 단어를 수정해야 할 경우가 있다. (ex) 엄마 -> 어머님) 여러 화면에 단어를 변경하려면, 직접 화면들을 찾아가면서 모두 변경해야 한다. 예제 수준이라면 문제가 되지 않지만, 화면이 수십개 이상이라면 파일을 모두 고쳐야 한다. 이런 상황을 대비하여 다양한 메시지들을 한 곳에서 관리하는 기능을 메시지 기능이라고 하며, 해당 브라우저의 언어 설정에 따라 사이트의 언어가 바뀌게 하는 기능을 국제화라고 한다. 이 두 가지 기능에 대해 알아보자. 2. 스프링 메시지 소스 설정 물론 메시지, 국제화 기능을 직접 구현하는 것도 가능하다. 하지만, 스프링은 기본적인 메시지와 국제화 기능을 모두 제공한다. 또한, 타임리프도 이를 편리하게 통합해서 제공한다. 메시지 관리 기능을.. 2024. 1. 18.
[Spring] 서블릿, HttpServletRequest, HttpServletResponse 1. 개요 이번 게시물에서는 실제로 서블릿을 사용해 볼 것이다. 서블릿에 대한 설명은 아래 게시물을 참고해보자. (서블릿에 대한 설명) 2. 서블릿 사용하기 서블릿을 사용하려면 웹 애플리케이션 서버를 직접 설치하고, 서블릿 코드를 클래스 파일로 빌드한 후, 톰캣 서버를 실행해야 한다. 이는 매우 번거럽기 때문에 톰캣 서버를 내장하고 있는 스프링 부트를 사용하면 된다. (사실 이제는 스프링 MVC 패턴을 주로 사용, 서블릿 동작 원리만 확인해 보기 위함이기 때문) - 스브링 부트 서블릿 환경 구성 @ServletComponentScan //서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(Str.. 2023. 1. 17.
[Spring] 빈 스코프 (@Scope) 0. 개요 이번 게시물에서는 스프링 스코프에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 빈 스코프란? 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 빈 스코프란 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. - 싱글톤: 기본 스코프(default), 스프링 컨테이너의 시작과 끝을 함께하는 가장 넓은 범위의 스코프이다. - 프로토타입: 프로토타입 빈의 생성과 의존관계 주입까지만 스프링 컨테이너가 관여하고, 그 이후로는 관리하지 않는 매우 짧은 범위의 스코프이다. - 웹 관련 스코프 - request: 웹 요청.. 2023. 1. 10.
[Spring] 스프링 빈 생명주기 0. 개요 이번 게시물에서는 스프링 빈의 생명주기에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 스프링 빈 생명 주기 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 개발자가 스프링 빈을 사용하기 위해서는 스브링 빈 객체가 생성되고, 의존관계가 주입된 후이다. 따라서 스프링에서는 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 따라서 스프링 빈의 라이프사이클을 정리해보면, 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 - 초기화 콜백:.. 2023. 1. 10.
[Spring] 스프링 빈 조회 0. 개요 이번 게시물에서는 스프링 빈을 조회하는 법에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 빈 등록 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 이번 게시물에서 조회 할 빈은 아래 게시물에서 자바 코드로 등록한 빈들이다. (스프링 빈 자바 코드로 수동 등록) 2. 스프링 컨테이너에 등록된 모든 빈 조회 class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @.. 2023. 1. 10.
[Spring] 싱글톤 패턴, 스프링 컨테이너, @Configuration 0. 개요 이번 게시물에서는 싱글톤, 스프링 컨테이너, @Configuration의 효과에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 싱글톤 패턴이 왜 필요할까? 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 스프링은 기본적으로 온라인, 그중에서도 웹 애플리케이션을 개발하기 위해 탄생하였다.(물론, 웹이 아닌 애플리케이션 개발도 가능은 하다) 일반적인 웹 애플리케이션이라면, 보통 여러 고객들이 동시에 요청을 한다. 이때, 스프링을 적용하지 않은 순수한 DI 컨테이너로 작성한 경우, 요청을 받을때마다 객체를 새로 생성한다. -> 만일 요청이 1초에.. 2023. 1. 10.
[Spring] 컴포넌트 스캔(@ComponentScan), 의존관계 자동 주입, 롬복(lombok) 0. 개요 이번 게시물에서는 스프링 컨테이너에 스프링 빈을 컴포넌트 스캔으로 추가하는 방법에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) (스프링 빈 자바코드로 수동 등록) 1. 자바 코드로 수동 등록의 한계 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 스프링 컨테이너를 @Bean을 통해서 수동 등록할 경우, 예제와 같이 3~4개정도면 충분히 작성 할 수 있다. 하지만 빈이 수백개가 된다면? 설정 정보 클래스도 커지고, 누락하는 문제도 발생할 수 있다. 그래서 스프링은 @ComponentScan을 통해 자동으로 스프링 빈을 등록하고, @Autowire.. 2023. 1. 10.
[Spring] 스프링 빈 자바 코드로 수동 등록(@Configuration, ApplicationContext) 0. 개요 이번 게시물에서는 스프링 컨테이너에 스프링 빈을 자바 코드(직접 만든 DI 컨테이너)로 추가하는 방법에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. AppConfig 스프링 기반 변경 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 우선 예시 프로젝트에서 사용할 DI 컨테이너를 작성해보자. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } public OrderService order.. 2023. 1. 9.