일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Di
- POJO
- Framework
- @JUnit
- Ubunt
- @AspectJ
- STS
- unix
- spring
- java
- 마이바티스
- spring aop
- Spring Boot
- AOP
- SpringJDBC
- java spring
- 프로퍼티
- XML
- Linux
- spring framework
- myBatis
- Spring JDBC
- pointcut
- @Spring-Test
- JdbcTemplate
- @test
- JDBC TEMPLATE
- 리눅스
- 컨테이너
- Dependency Injection
- Today
- Total
목록토비의 스프링 부트 - 이해와 원리/섹션5 - 독립 실행형 스프링 애플리케이션 (11)
개키우는개발자 : )
요약 및 결론리팩토링을 통한 코드 정리와 스프링 부트의 동작 원리를 다루고, 기존 코드를 리팩토링해 SpringApplication.run()과 비슷한 코드를 작성하며 스프링 부트의 작동 방식을 알아보았습니다. 핵심 내용리팩토링과 코드 추출:run() 메소드로 추출: 메인 메소드에서 반복되는 코드를 추출하여 run 메소드로 분리하고, 클래스 타입과 명령어 라인 인수를 파라미터로 받는 메소드를 작성.이 과정을 통해 재사용 가능한 메소드를 만들어 코드의 유연성과 유지보수성을 높임.SpringApplication.run()과 유사한 동작:MySpringApplication.run() 메소드를 만들어 다양한 클래스에서 사용할 수 있도록 코드를 정리. 이는 스프링 부트의 SpringApplication.run()..
요약 및 결론스프링 컨테이너의 빈 등록 방식을 활용하여, Factory 메소드에서 DispatcherServlet과 같은 객체를 빈으로 관리하는 방법과 ApplicationContextAware 인터페이스를 사용하여 스프링 컨테이너가 빈에 필요한 정보를 어떻게 주입하는지 살펴봤습니다.핵심 내용스프링 빈 등록 방식:Factory 메소드를 활용한 빈 등록:기존의 TomcatServletWebServerFactory와 DispatcherServlet 같은 객체를 스프링 빈으로 등록하는 방법을 학습.이러한 빈들을 스프링 컨테이너가 관리하게 함으로써 유연한 확장성을 확보할 수 있습니다.Factory 메소드에서 반환 타입으로 추상화된 타입을 사용하는 것이 좋은데, 이는 나중에 Tomcat이 아닌 다른 서블릿 컨테이..
결론 및 요약컴포넌트 스캔과 애노테이션을 이용해 스프링 빈(Bean)을 등록하는 방법과 이를 더 효율적으로 사용하는 메타 애노테이션(Meta-Annotation)에 대해 배웠습니다. 스프링 부트에서 자주 사용되는 컴포넌트 스캔 방식을 통해 빈 등록을 간소화하고, 메타 애노테이션을 활용한 사용자 정의 애노테이션을 만들어 사용하는 방법을 익혔습니다.주요 내용 요약컴포넌트 스캔을 통한 빈 등록:@Component 애노테이션을 클래스에 붙이면, 스프링 컨테이너의 컴포넌트 스캐너가 해당 클래스를 빈으로 자동 등록합니다.스프링 애플리케이션의 구성을 간소화하며, 별도의 설정 파일이나 명시적인 등록 코드 없이도 자동으로 빈이 등록됩니다.스프링 부트에서는 @ComponentScan을 이용하여 패키지 내의 모든 컴포넌트를..
결론 및 요약팩토리 메서드를 사용하여 Java 코드로 스프링 빈(Bean)을 등록하고 의존성을 주입하는 방법을 다뤘습니다. 또한, 이를 구성하는 스프링 컨테이너에서의 구성 정보 처리 방법을 학습했습니다. 이는 스프링 애플리케이션에서 좀 더 유연하고 복잡한 빈 생성 및 의존성 주입을 지원하기 위해 사용될 수 있습니다.주요 내용 요약팩토리 메서드를 통한 빈 생성:스프링에서 제공하는 팩토리 메서드는 자바 메서드를 사용해 오브젝트를 생성하고, 이를 빈으로 등록할 수 있는 방식입니다.예를 들어, HelloController와 HelloService와 같은 빈 오브젝트를 팩토리 메서드에서 생성하여 스프링 컨테이너에 등록할 수 있습니다.팩토리 메서드의 이점:복잡한 빈 초기화: 복잡한 초기화나 의존성 주입이 필요한 경..
결론 및 요약서블릿 컨테이너의 초기화 작업을 스프링 컨테이너의 초기화 과정에 통합하는 방법을 다뤘습니다. 이전에는 서블릿 컨테이너와 스프링 컨테이너의 초기화 작업이 별도로 이루어졌으나, 이번에는 스프링 컨테이너가 자동으로 서블릿 컨테이너를 초기화하도록 코드 구조를 변경했습니다.주요 내용 요약두 파트로 나뉘었던 초기화 작업:첫 번째 파트는 스프링 컨테이너(SpringContainer) 초기화 및 Bean 등록 작업.두 번째 파트는 서블릿 컨테이너(Servlet Container) 초기화 및 DispatcherServlet 등록 작업.이제 이 두 작업을 하나로 통합하여 스프링 컨테이너가 초기화되는 과정에서 서블릿 컨테이너의 초기화 작업이 자동으로 이루어지도록 설정했습니다.Spring의 onRefresh 메소..
결론 및 요약컨트롤러 클래스 내부에 맵핑 정보를 애노테이션으로 직접 추가하여, 더 간결하게 웹 요청을 처리하는 방법을 배웠습니다. 기존에 서블릿 코드에서 맵핑 작업을 수동으로 처리하던 방식을 스프링의 애노테이션 기반 맵핑으로 전환하는 작업을 했습니다. 이를 통해 코드가 훨씬 간결해지고, 스프링이 제공하는 자동 맵핑 및 바인딩 기능을 활용할 수 있게 되었습니다.주요 내용 요약애노테이션 기반 맵핑:@GetMapping, @RequestMapping 등의 애노테이션을 사용하여, 웹 요청을 처리할 컨트롤러 메소드에 대한 URL 및 HTTP 메소드 매핑을 설정했습니다.RequestMapping을 클래스 레벨에 선언하면, 그 클래스 내부의 메소드들이 URL을 처리하는 기본 경로를 지정하게 됩니다.메소드 레벨에 선언..
결론 및 요약DispatcherServlet을 도입하여, 기존에 우리가 직접 작성했던 서블릿 코드와 맵핑 작업을 제거하고 스프링의 전통적인 서블릿 컨트롤러인 DispatcherServlet이 이를 대신 처리하도록 구현하였습니다. 이를 통해 Servlet Container-less 애플리케이션으로의 전환을 진행했습니다.주요 내용 요약기존 서블릿의 복잡성 제거:이전에는 FrontController 서블릿을 직접 작성하여 모든 웹 요청을 처리하고, 매핑을 수동으로 설정했지만, 이번 시간에 DispatcherServlet을 사용함으로써, 이 복잡한 작업을 대신 처리하도록 하였습니다.이를 통해 서블릿을 다루는 복잡한 코드를 단순화할 수 있었습니다.DispatcherServlet의 역할:DispatcherServl..
결론 및 요약스프링 컨테이너를 이용하여 의존성 주입(Dependency Injection, DI)을 구현하는 방법을 학습했습니다. HelloController와 SimpleHelloService 간의 의존 관계를 인터페이스를 통해 관리하고, 스프링 컨테이너가 이를 자동으로 처리하여 개발자가 의존성을 명시적으로 관리하지 않아도 되도록 만들었습니다.주요 내용 요약인터페이스 도입 및 의존성 분리:기존 SimpleHelloService 클래스는 인터페이스를 구현하지 않았으나, 이를 HelloService라는 인터페이스로 추상화하였습니다.HelloService 인터페이스는 sayHello 메소드를 정의하고, SimpleHelloService는 이를 구현하는 방식으로 변경하였습니다.이렇게 인터페이스를 도입하면, H..
결론 및 요약스프링의 핵심 개념인 의존성 주입(Dependency Injection, DI)에 대해 학습했습니다. DI는 클래스 간의 의존 관계를 효과적으로 관리하여 코드의 유연성과 재사용성을 높이는 방법입니다. 스프링 컨테이너가 DI를 통해 객체들 간의 관계를 설정하고, 개발자가 직접 의존성을 관리하지 않아도 자동으로 객체를 주입하도록 구성할 수 있습니다. 이로 인해 코드가 더 모듈화되고 변경에 대한 유연성이 확보됩니다.주요 내용 요약의존성 주입(DI) 개념:클래스가 다른 클래스에 의존할 때, 직접 인스턴스를 생성하는 대신 외부에서 필요한 객체를 주입받는 방식입니다. 이로 인해 클래스 간의 강한 결합을 피하고 유연한 코드 작성이 가능합니다.HelloController가 SimpleHelloService..
결론 및 요약스프링 컨테이너를 사용하여 애플리케이션에서 객체를 효율적으로 관리하고 재사용하는 방식을 배웠습니다. 특히, 싱글톤 패턴을 적용하여 중복된 객체 생성을 방지하고, 기존의 HelloController의 역할을 분리해, SimpleHelloService라는 서비스 객체를 통해 비즈니스 로직을 위임하는 방식으로 개선했습니다. 이를 통해 코드의 유지보수성을 높이고 책임을 분산시켜 더 효율적인 구조를 만들었습니다.주요 내용 요약스프링 컨테이너의 역할:스프링 컨테이너는 객체를 생성하고 관리하며, 객체를 한 번만 생성하여 재사용하는 방식으로 동작합니다. 이를 통해 여러 요청이 동일한 객체를 사용하게 되며, 이는 싱글톤 패턴과 유사한 효과를 제공합니다.getBean() 메소드를 사용해 스프링 컨테이너에 등록..
결론 및 요약스프링 컨테이너를 활용하여 독립 실행이 가능한 스프링 애플리케이션을 만들었습니다. 기존 Servlet 기반의 애플리케이션에서 직접 객체를 생성하고 관리하던 방식에서, 스프링 컨테이너를 통해 객체를 생성 및 관리하고 이를 필요할 때 가져와 사용하는 방식으로 전환했습니다. 이를 통해 더 유연하고 관리하기 쉬운 애플리케이션 구조를 구축할 수 있었습니다.주요 내용 요약스프링 컨테이너와 Servlet 컨테이너의 역할 분리:Servlet 컨테이너는 여전히 HTTP 요청을 처리하고 응답을 생성하는 역할을 맡지만, 객체(빈)의 생성과 관리는 스프링 컨테이너가 담당하게 되었습니다.기존에는 FrontController가 직접 객체를 생성하고 관리했지만, 이제는 스프링 컨테이너가 이 역할을 맡으며, 스프링 컨테..