Fullstack-Study-241204-250625

커리큘럼(12-30/변경)

01. Java
02. git
03. Database 
04. Jsp [Server]

05. HTML,CSS 
07. JS
06. 미니프로젝트-2W

08. SpringFramework , SrpingBoot (v)
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)

스프링 프레임워크(Spring Framework)

특징

  • POJO(Plain Old JAva Object) 기반의 프레임워크
  • 자바 오브젝트 기반 프레임워크
  • 자바 객체의 라이프사이클을 스프링 컨테이너가 직접 관리하며, 스프링 컨테이너로부터 필요한 객체를 얻어 올 수 있음
  • DI(Dependency Injection) 지원
  • 각 계층이나 서비스들 사이 또는 객체들 사이에 의존성이 존재할 경우 스프링 프레임워크가 서로를 연결 시켜줌.
  • 클래스들 사이에 약한 결합을 가능케 함
  • AOP(Aspect Oriented Programming) 지원
  • 트랜잭션, 로깅, 보안 등 여러 모듈에서 공통적으로 지우너하는 기능을 분리하여 사용할 수 있음
  • 확장성이 높음
  • 스프링 프레임워크의 소스는 모두 라이브러리로 분리시켜 놓음으로써 필요한 라이브러리만 가져다 쓸 수 있음
  • 많은 외부 라이브러리들도 이미 스프링 프레임워크와 연동되고 있음
  • Model2 방식의 MVC Framework를 지원

스프링 프레임워크 모듈

스프링 모듈 기능
spring-core 스프링의 핵심인 **DI(Dependency Injection)와 IoC(Inversino of Control)**를 제공
spring-aop AOP구현 기능 제공
spring-jdbc 데이터베이스를 쉽게 다룰수 있는 기능 제공
spring-tx 스프링에서 제공하는 트랜잭션 관련 기능 제공
spring-webmvc 스프링에서 제공하는 컨트롤러와 뷰를 이용한 스프링 MVC구현 기능 제공

스프링 컨테이너(IoC)

  • 스프링에서 객체를 생성하고 조립하는 컨테이너로, 컨테이너를 통해 생성된 객체를 **빈(Bean)**이라고 부름
  • 객체를 필요할 때 생성해서 사용하던 방식을 미리 생성해 놓고 꺼내서 사용하는 형태로 변경

Maven 프로젝트

  • 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들을 자동으로 다운 받아줌
  • 폴더
  • java폴더(프로젝트명/src/main/java)

: 앞으로 만들어지는 자바 파일들이 관리되는 폴더

  • resources 폴더(프로젝트명/src/main/resources)

: 자원을 관리하는 폴더로 스프링 설정파일(XML) 또는 프로퍼티 파일 등이 관리

Spring DI/IoC

  • Java의 class상속 / interface를 이용한 추상화를 기반으로 하는 개발 방법

  • IoC : Inversion of Control

  • 프로그램을 제어하는 패턴 중 하나
  • DI는 IoC패턴의 구현방법 중 하나
  • DI에 따라 프로그램의 흐름이 완전히 변경
  • 객체를 필요할 때 생성해서 사용하던 방식을 미리 생성해 놓고 꺼내서 사용하는 형태로 변경
  • DI : Dependency Injection
  • 스프링 Container에 만들어둔 각종 클래스(bean)들은 서로 의존적
  • A객체가 B객체 없이 동작이 불가능한 상황
  • 객체 안에 객체가 저장되는 형태

DI 설정 방법

  • 2가지 의존성 주입 방법
  1. 생성자를 통한 의존성 주입

<constructor-arg ref="빈Id"></constructor-arg>

  1. setter를 통한 의존성 주입
<property name="변수명" value="값"/>
<property name="변수명" value="객체"/>

빈(Bean)의 범위

  1. 싱글톤(Singleton)
  • 스프링 컨테이너에서 생성된 빈(Bean)객체의 경우 동일한 타입에 대해서는 기본적으로 한 개만 생성이 되며, getBean()메소드로 호출될 떄 동일한 객체가 반환
  1. 프로토타입(Prototype)
  • 싱글톤범위와 반대의 개념으로 ,개발자는 별도로 설정을 해줘야 하는데 스프링 설정 파일에서 빈객체를 정의할 떄 scope속성을 명시해 주면 됨

의존객체 자동 주입

  • 스프링 설정 파일에서 의존 객체를 주입할 때 또는 태그로 의존 대상 객체를 명시하지 않아도 스프링 컨테이너가 자동으로 필요한 의존 대상 객체를 찾아서 의존 대상 객체가 필요한 객체에 주입해주는 기능
  • 구현 방법은 @Autowired@Resource 어노테이션을 이용해 쉽게 구현 가능

의존객체 자동 주입 태그 종류

@Autowired (required=false)

  • 타입을 기준으로 의존성을 주입
  • 같은 타입 빈이 두 개 이상 있을 경우 변수이름으로 빈을 찾음
  • Spring의 어노테이션

@Qualifier

  • 빈의 이름으로 의존성 주입
  • @Autowired와 같이 사용
  • Spring의 어노테이션

@Resource

  • name을 속성을 이용하여 빈의 이름을 직접 지정
  • JavaSE의 어노테이션

@Inject

  • @Autowired 어노테이션을 사용하는 것과 같음
  • JavaSE의 어노테이션

의존객체 자동 주입 태그

1. @Autowired

주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입

  • 속성값, 세터, 생성자 적용가능

2. @Resource

주입하려고 하는 객체의 이름이 일치하는 객체를 자동으로 주입

  • 속성값, 세터 적용가능

3. @Qualifier

동일한 객체가 2개 이상인 경우 스프링 컨테이너는 자동 주입 대상 객체를 판단하지 못해서 Exception을 발생시킴

  • 모호한 bean의 강제 연결

빈생성

  • 자바클래스 위에 @Controller, @Component, @Service, @Repository 어노테이션 중 하나