다시 웹, 백엔드로 51

자동 구성 (Auto Configuration) - 2

@Contitional 특정 상황일 때만 특정 빈들을 등록해서 사용하도록 도와주는 기능 스프링 부트 자동 구성에서 자주 사용됨 matches() 메서드 : true ➡️ 동작 o / false ➡️ 동작 x ConditionContext : 스프링 컨테이너, 환경 정보 AnnotatedTypeMetadata : 어노테이션 메타 정보 Condition 인터페이스를 구현해 자바시스템 속성이 'memory=on' 이라고 되어 있을때 메모리기능이 동작 하도록 구현 MemoryCondition "on" 일 경우 true 반환 MemoryConfig @Conditional 어노테이션 추가 (MemoryCondition.class 부터 먼저 체크함) 인텔리제이 VM 속성 설정 -Dmemory=on / -D 꼭 붙여줘..

자동 구성 (Auto Configuration) - 1

자동 구성 (Auto Configuration) 자동 구성 예제 Member 를 만들고 Jdbc를 연결해 들어간 데이터가 맞는지 테스트 예정 Member 클래스 생성 DbConfig 클래스 생성 JdbcTemplate 을 사용해 회원 데이터를 DB에 보관하고 관리하는 기능 각 기능들을 스프링 빈으로 직접 등록 외부 DB 가 아닌 JVM 내부에서 동작하는 메모리 DB 사용 (H2) Repository 생성 Test 코드 @Transactional 어노테이션을 사용해 트랜잭션 기능 적용 TransactionManager 가 스프링 빈으로 등록되어 있어야 함 테이블 생성, 회원 저장, 조회 후 검증 JdbcTemplate , DataSource , TransactionManager 모두 사용했지만 스프링 빈으..

스프링 부트 스타터와 라이브러리 관리

스프링 부트 스타터와 라이브러리 관리 라이브러리 관리의 어려움 프로젝트를 시작하면 어떤 라이브러리를 사용할 지 고민하고 선택함 각 라이브러리들끼리 호환이 잘되는지 안되는지 알아야해 버전까지 고민해야 함 프로젝트 세팅 시간 ⬆️ 라이브러리 직접 관리 문제점 수 많은 라이브러리를 알아야하고, 버전까지 골라서 선택해야함 호환이 잘 안되는 버전도 있음 스프링 부트 라이브러리 버전 관리 스프링 부트가 라이브러리의 버전을 직접 관리해주고, 원하는 라이브러리만 고르고 버전은 생략해도 됨 스프링 부트가 최적화된 라이브러리 버전을 선택해줌 버전 관리 기능을 사용하려면 io.spring.dependency-management 플러그인을 사용해야 함 dependency-management 버전관리 io.spring.depe..

스프링 부트와 내장 톰캣 - 2

편리한 부트 클래스 만들기 부트 : 시작을 편하게 처리해주는 것 어노테이션 만들기 만든 어노테이션으로 컴포넌트를 스캔 하기 때문에 HelloConfig에 어노테이션은 주석 처리 프로젝트를 실행 시키는 main클래스 생성 (많이 본 형태임) 패키지 위치가 중요 (hello) 만든 어노테이션에 컴포넌트 스캔이 추가되어 해당 어노테이션이 붙은 클래스의 현재 패키지부터 하위 패키지까지 스캔 대상으로 사용 MySpringApplication.run(설정 정보, args) 실행하면 됨 @MySpringBootApplication 어노테이션과 MySpringApplication.run() 메서드만 기억하면 됨 내장 톰캣, 스프링 컨테이너 생성, 디스패처 서블릿, 컴포넌트 스캔까지 한번에 동작함 스프링 부트 프로젝트 ..

스프링 부트와 내장 톰캣 - 1

WAR 배포 방식의 단점 WAS 를 별도로 설치해야함 개발 환경 설정이 복잡함 배포 과정이 복잡함 톰캣 버전을 변경하려면 톰캣을 다시 설치해야함 외장 서버 VS 내장 서버 왼쪽은 WAS 를 실행해서 동작하는 방식, 오른쪽은 JAR안에서 WAS 라이브러리가 포함되는 방식 내장 톰캣 - 설정 서블릿 관련해서도 다 들어있음 내장 톰캣 - 서블릿 내장 톰캣 생성해서, 8080 포트에 연결 서블릿 등록 tomcat.addServlet() 서블릿 등록 context.addServletMappingDecoded() 서블릿 경로를 매핑 tomcat.start() 톰캣 시작 내장 톰캣 - 스프링 내장 톰캣 (8080) 포트 연결 스프링 컨테이너 빈 (Bean) 등록 스프링 MVC 디스패처 서블릿을 만들고 스프링 컨테이너..

웹 서버와 서블릿 컨테이너 - 2

서블릿 컨테이너 등록 WAS 와 스프링 통합 스프링 컨테이너 만들기 스프링 MVC 컨트롤러 스프링 컨테이너 빈으로 등록 스프링 MVC 디스패처 서블릿 서블릿 컨테이너 등록 현재 스프링 관련 라이브러리가 없으니 추가 spring-webmvc 라이브러리 추가 시 spring-core 를 포함한 스프링 핵심 라이브러리들도 함께 포함 간단한 스프링 컨트롤러로, HTTP 응답으로 'hello spring' 이라는 메시지를 반환. 컨트롤러를 사용하기 위해 직접 스프링 빈(Bean) 으로 등록 이제 애플리케이션 초기화를 사용해서 서블릿 컨테이너에 생성 후 등록 생성 후 실행하게 되면 바로 호출되는 것을 볼 수 있음 AnnotationConfigWebApplicationContext 가 스프링 컨테이너임 appCont..

웹 서버와 서블릿 컨테이너

웹 서버와 서블릿 컨테이너 외장 서버 톰캣 같은 WAS (웹 애플리케이션 서버) 를 설치 서블릿 스펙에 맞추어 코드 작성 후 WAR 로 빌드, war 파일을 만듦 ➡️ 배포 내장 서버 스프링 부트가 내장 톰캣을 포함 JAR 빌드, jar 실행 시 was 도 함께 실행됨 실습 tomcat 10 이상 java 17 웹 서버에 띄울 html 생성 서블릿 등록 동작 순서 '/test' 로 요청이 오면 서블릿 실행 'TestServlet.service' 출력 'test' 로 응답 실행 시 톰캣 (WAS)에 배포 후 실행해야함 war 빌드와 배포 프로젝트 폴더로 이동 cmd 창에서 프로젝트 빌드 (윈도우 : gradlew build) war 파일 생성 확인 (build/libs/server-0.0.1-SNAPSHO..

Spring Framework

Framework 사용 유지보수 용이 생산성 ⬆️ 배우는 이유? 발전과정과 스프링의 원리를 알기 위해 Servlet ➡️ JSP ➡️ Spring ➡️ SpringBoot 스프링 등장 ➡️ 당시 엄청 복잡함 (EJB, Enterprise Java Beans) ➡️ J2EE 등장 (스프링의 문제점 지적) ➡️ 스프링 프레임워크 등장 ➡️ Bean 등록 지옥 ➡️ 스프링부트 등장 스프링부트 Boot 최소한의 인간 개입으로 시작하고 완전히 작동하는 것을 의미 시작을 위한 복잡한 설정 과정은 스프링 부트가 해결 개발자는 새로운 스프링 애플리케이션을 쉽고 빠르게 시작 스프링부트 특징 스프링을 편리하게 사용할 수 있도록 지원 Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 (WAS) 라이..

[2주차] 백엔드 커리어 로드맵 - 어떤 백엔드 개발자가 되고 싶은지

- 백엔드 개발자 로드맵 - 어떤 백엔드 개발자가 되고싶은가? 백엔드 개발자 로드맵을 보니 '악!' 소리가 나온다. 컴공 지식이 없는 나로선 살 떨리는 로드맵이다. 하지만 열심히 익히고 배우고 보면 머리속에 뭐라도 남게지라는 생각이 든다. 장애가 없는 사이트를 운영할 수 있는 백엔드 개발자가 되고싶다. (꿈은 크게 가지라고...) 완벽한 프로그램은 없다지만 내가 할 수 있는 최대한의 기량과 기백으로 차근차근(?) 해 나갈 것이다. 우선 기능 많은 깔쌈한 게시판 먼저 만들수 있도록.. 공부를.....

[1주차] 프론트엔드와 백엔드 차이 - 백엔드 개발자가 되고 싶은 이유

- 프론트엔드(Front-End) 사용자가 웹 사이트 또는 웹 애플리케이션의 URL을 입력하거나 모바일 애플리케이션을 다운로드할 때, 사용자들은 아주 깔끔한 레이아웃을 가진 인터페이스를 보게 된다. 이렇게 사용자가 마주 보는 인터페이스를 ‘프론트엔드’라고 부른다. 주로 웹 및 모바일 솔루션의 사용자 인터페이스(UI)와 사용자 경험(UX)을 만드는 데 초점을 둔다. - 프론트엔드(Front-End) 주사용 언어 - [HTML] - [CSS] - [JavaScript] - 백엔드(Back-End) 웹사이트나 웹 애플리케이션 또는 모바일 솔루션의 프로세스와 관련된 서버 측(Server-side)과 데이터베이스를 관리해 주는 기술이다. 백엔드는 눈에 보이지 않는 서버에서 작용하는 기술을 다룬다. 데이터를 저장하..