전체 글

전체 글

    스프링 컨테이너와 스프링 빈

    ※ 본문은 김영한 선생님의 인프런 '스프링 핵심 원리 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ▶ 스프링 컨테이너 ApplicationContext : 스프링 컨테이너이자 인터페이스 @Configuration이 붙은 AppConfig와 같은 클래스를 설정(구성) 정보로 사용 @Configuration이 붙은 클래스 내에 @Bean이 적힌 메소드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록 → 이렇게 등록된 객체를 스프링 빈이라 부름 (※ 스프링 빈의 이름은 @Bean이 붙은 메소드의 이름) 이후 applicationContext.getBean()과 같은 메소드를 사용해서 스프링 빈을 찾을 수 있음 ▶ 스프링 빈 조회 조회하는 코드 : ac.getBean(빈 이름, 타입) / ac.ge..

    AppConfig와 IoC, DI에 관하여

    ※ 본문은 김영한 선생님의 인프런 '스프링 핵심 원리 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ▶ AppConfig의 등장 Q. 애플리케이션을 공연이라고 가정하고 각각의 인터페이스를 배역이라고 했을 때, 배역을 맡는 배우는 누가 선택하는가? → 배우는 배역을 수행하는 '하나의 책임'에만 집중해야 하며, 공연을 구성하고 배우를 섭외해서 배역에 지정하는 책임을 담당하는 별도의 '공연기획자'가 필요! → AppConfig 클래스를 만들어서 구현 객체의 생성과 연결을 담당 → 공연기획자인 AppConfig는 구체 클래스를 선택하고 배역에 맞는 배우를 선택 애플리케이션이 어떻게 동작해야 할지 전체 구성을 책임진다. ▶ IoC (Inversion of Control, 제어의 역전) AppConfig의 등..

    좋은 객체 지향의 5가지 원칙 SOLID

    ※ 본문은 김영한 선생님의 인프런 '스프링 핵심 원리 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ▶ SRP 단일 책임 원칙 한 클래스에 하나의 책임만 '하나'의 책임이 모호할 수 있음 (클 수도 있고 작을 수도 있고, 문맥과 상황에 따라 다름) 중요한 기준은 변경 → 변경이 있을 때 파급 효과가 적다면 SRP를 잘 따른 것 ▶ OCP 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려있지만 변경에는 닫혀 있어야 함 확장을 하려면 기존 코드를 변경해야 한다는 의문이 생길 수 있음 → 다형성을 활용하여 인터페이스를 구현한 새로운 클래스를 만들어서 새로운 기능을 구현하는 방식을 활용해야 함 ▶ LSP 리스코프 치환 원칙 프로그램의 객체는 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바뀔 수 있어야 ..

    Spring이란 무엇인가

    ※ 본문은 김영한 선생님의 인프런 '스프링 핵심 원리 - 기본편' 강의를 듣고 정리한 내용임을 알립니다. ▶ Spring의 간략한 탄생 배경 옛날에는 EJB(Enterprise Java Beans)를 활용하여 개발을 진행하였으나 무척 까다로운 방법이었음 2002년, Rod Johnson이 EJB의 문제점을 지적하며 약 30,000 라인의 기반 기술을 예제 코드로 선보임 책 출간 직후 Juergen Hoeller, Yann Caroff가 Rod Johnson에게 오픈소스 프로젝트 제안 EJB라는 겨울을 넘어 새로운 시작이라는 뜻으로 'Spring'이라는 이름을 지었음 스프링의 핵심 코드의 상당수는 유겐 휠러가 지금도 개발 중 지금 시대에 자바 기술을 사용할 때 스프링과 JPA가 가장 큰 메인 기술로 자리잡..

    김영한 선생님의 스프링 입문 강의를 공부하고서

    ※ 블로그를 운영해본 적이 없고 웹 개발에 대한 능력도 아직 초보적인 수준이라 본문의 내용이 미흡하거나 두서 없을 수 있다는 점 미리 양해 부탁드립니다. ※ 본문은 김영한 선생님의 인프런 '스프링 입문' 강의를 듣고 정리한 내용임을 알립니다. ◈ 공부한 내용 정리 1. 프로젝트 환경설정 https://start.spring.io → 스프링 프로젝트를 간단하게 만들 수 있도록 도와줌 Maven 보다는 Gradle 스프링은 톰캣이라는 웹 서버를 내장하고 있음 어플리케이션 실행 방식은 gradle 실행보다는 intelliJ 실행 (settings에서 gradle 검색 후 변경할 것) 스프링 부트 2.4부터는 application.properties에 'spring.datasource.username=sa'를 ..

    [java.lang.UnsupportedClassVersionError]

    한국 웹 개발에서 상당히 중요하다고 여겨지고 있는 Spring에 대한 강의를 새롭게 접하고 있던 중 발생한 에러이다. 이번 강의를 듣기 이전에 다른 교재를 학습할 때는 Java 8 버전을 사용했는데, 본 강의에서는 Java 11 버전을 이용한다고 하여 나는 당연하게도 Java 11 설치 이후 환경 변수를 바꿔서 설정해주었지만 어째서인지 cmd 창에서는 Java 8 버전을 계속 이용하고 있다고만 하고 있었다. 해결방안을 찾아보니 이전에 사용한 버전들을 삭제하라고 해서 따라해봤더니 cmd 창에서는 Java 8 버전 디렉토리를 찾을 수 없다는 에러가 뜨면서 여전히 Java 8 버전을 찾아가려고 하는 느낌이었다. 그래서 다시 인터넷을 검색해보며 해결방안을 모색해보니 우연하게도... 윈도우의 '앱 및 기능'에서 ..