728x90 스프링22 스프링 컨포넌트 스캔 이번 포스팅에서는 스프링과 컴포넌트 스캔에 대해서 정리해 보겠습니다. 컴포넌트 스캔과 의존관계 자동 주입 이전 포스팅까지 스프링 빈을 등록할 때 자바 코드의 @Bean 또는 XML을 통해서 설정 정보에 직접 등록할 빈을 만들었습니다. 그런데 만약 등록해야 할 스프링 빈이 셀수 없이 많을 때도 빈을 직접 등록할 수 있을까요?? 이런 고민을 통해 스프링에서 설정 정보가 없더라도 자동으로 빈을 등록해주는 컴포넌트 스캔이라는 기능을 제공하도록 했습니다. 뿐만 아니라 빈들 사이의 의존관계를 처리하기 위해 @Autowired라는 기능을 통해 의존관계를 처리합니다. 코드를 보며 더 정확하게 정리해 보겠습니다. @Configuration @ComponentScan( excludeFilters = @ComponentSc.. 2021. 9. 15. 스프링 싱글톤 이번 포스팅에서는 싱글톤 패턴에 대해서 정리해보겠습니다. 싱글톤 - 스프링은 기업용 온라인 서비스를 지원하기 위해서 탄생했습니다. - 따라서 대부분의 스프링 애플리케이션은 웹 애플리케이션입니다 -> 이로 인해 동시에 여러 고객으로부터 요청을 받습니다. 위의 그림처럼 애플리케이션이 동작할 때 클라이언트의 요청에 따라 매번 새로운 객체를 생성해야 합니다. @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); //1. 조회 : 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회 : 호출할 .. 2021. 9. 14. 스프링 컨테이너와 스프링 빈 이번 포스팅에서는 스프링 컨테이너와 빈에 대해서 간략하게 정리해 보겠습니다. 스프링 컨테이너 스프링 컨테이너를 생성할 때 ApplicationContext application = new AnnotationConfigApplicationContext(AppConfig.class) 코드를 사용하면 됩니다. 여기서 ApplicationContext가 스프링 컨테이너라고 하고 인터페이스입니다. 위에서 AppConfig.class는 애노테이션을 이용해 빈을 등록하는 클래스라서 AnnotationConfigApplicationContext를 이용해 스프링 컨테이너를 구체화 시켰습니다. 추가적으로 BeanFactory와 ApplicationContext를 스프링 컨테이너라고 부릅니다. 하지만 둘의 차이가 있고 다음.. 2021. 9. 13. 스프링 프레임워크란 무엇일까? 이번 포스팅에서는 스프링 프레임워크에 대한 정리를 해보겠습니다!! 스프링 프레임워크는 어디서 왔을까? 스프링 프레임워크는 정말 쉽게 개발자가 웹 애플리케이션 개발을 좀 더 쉽게 할 수 있도록 도와주는 것입니다. 스프링 프레임워크가 등장하기 전에 EJB라는 기술이 웹 애플리케이션 개발을 도와주고 있었습니다. EJB는 순수한 자바로 개발을 하기에 부담을 느끼고 만들어낸 기술입니다. - 물론 servlet, jsp 같은 기술들이 있었지만 복잡한 엔터프라이즈 애플리케이션을 구현하기에는 부담이 있었습니다. 여기서 개발자가 느끼는 부담은 비즈니스 로직뿐만 아니라 로우레벨(멀티쓰레딩, 리소스풀링, 트랜잭션, 보안 등)의 기술적인 처리도 요구되는 것이었습니다. -> 위와 같은 문제를 해결하기 위해 EJB라는 기술을 도.. 2021. 8. 17. 순수 자바를 이용한 스프링 의존관계의 원리(IoC,DI) 이번 포스팅에는 스프링이 쓰이지 않지만 순수한 자바를 통해 의존관계를 왜 쓰는지 어떻게 사용되는지 알아보겠습니다. 좋은 객체지향 애플리케이션이란?? 정말 많은 이야기가 있고 제가 지금 떠오르는 개념만 하더라도 SRP : 한 클래스에서는 하나의 책임만 DIP : 개발자는 추상화의 의존하며 구체화의 의존하면 안된다 OCP : 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있다 이런 개념들이 있습니다!! 저는 개인적으로 다형성이 중요하다고 생각합니다. 바로 새로운 기능을 추가하거나 변경할 때 클라이언트를 변경하지 않고 구현기능을 유연하게 바꾸는 것입니다. 쉽게 이해하기 위해 예를 하나 들어보겠습니다!! 춘향이와 몽룡이의 이야기를 볼때 춘향과 몽룡은 역할입니다!! 그리고 이 역할을 수행하는 배우들을 구현체라.. 2021. 8. 7. 스프링으로 게시판 만들기 6 - 데이터 수정 이번 포스팅에서는 데이터를 수정하는 방법에 대해서 해볼겁니다! 처음에는 멍청하게도 수정된 내용을 다시 저장하면 되지 않나? 라고 생각했는데 그럼 원래 데이터는...?? 수정하면 데이터의 id도 바뀌는건데 그건 너무 불필요한 과정인거 같았습니다. 그래서 이고저곳 찾아본 결과 @Transactional을 사용하여 쉽게 데이터를 수정할 수 있었습니다. 현재 글의 내용과 수정하기 버튼을 보실수 있습니다. @GetMapping("/basic/board/{boardId}/edit") public String boardEditForm(@PathVariable Long boardId,Model model) { Optional boards = boardRepository.findById(boardId); Board bo.. 2021. 8. 5. 이전 1 2 3 4 다음 728x90