spring, spring boot

yeoro·2021년 7월 13일
0

스프링

  • spring framework, spring boot 등 여러 프로젝트들의 모음

스프링 프레임워크

  • 객체 지향의 특징을 잘 활용할 수 있게 해주며 개발자들이 핵심 비즈니스 로직 구현에만 집중할 수 있게 해주는 프레임워크
  • 초기 spring 기본 설정을 잘 해놓는다면 스프링 관련 코드를 신경 쓸 필요가 없다.

스프링 부트

  • 약간의 설정만으로 spring 어플리케이션을 제작할 수 있게 해주는 스프링 프로젝트
  • 다양한 기술을 지원하면서 개발자들이 처리해야 하는 설정 작업이 많아지고 복잡해졌다.
  • 특징
    • 의존성 관리
      • 기존 spring은 개발에 필요한 모듈의 의존성을 각각 다운받아 했고, 버전도 맞춰 주어야 했다. (build.gradle)
      • spring-boot-starter를 지원하여 자주 사용하는 모듈간의 의존성과 버전 조합을 제공해준다.
    • 자동 설정
      • 기존 spring은 많은 환경 설정으르 해야 한다. (Bean 어노테이션, configuration 클래스 작성)
      • application.properties 에 간단한 선언으로
      • SpringBootApplication, EnableAutoConfiguration(자동 설정), ComponentScan(컴포넌트 어노테이션이 붙은 클래스를 bean으로 등록), SpringBootConfiguration
    • 내장 was
      • spring을 통해 배포하려면
        • war 패키징 -> was 설치(tomcat 등) -> was에 war 파일 올리기
    • 모니터링
      • actuator를 통해 실행중인 어플리케이션의 관리 및 모니터링 가능
      • 어떤 빈이 등록되어있는지, 어플리케이션 cpu사용량, 어플리케이션 상태 정보 등

의존성 주입 (DI, Dependency Injection)

  • 한 클래스에서 다른 클래스의 객체를 직접 생성하는 것(강한 결합)을 외부에서 주입 받는 것.

  • @Controller, @Service, @Repository 등을 선언한 클래스들을 IoC 컨테이너에 빈으로 등록하고, 해당 객체가 생성될 때 주입시켜준다.

  • @Autowired 어노테이션을 통해 의존성을 주입한다. (필드 주입)

  • 재사용성

  • 코드 단순화 (객체 생성 코드가 없으므로)

  • 느슨한 결합도, 유연성, 확장성

Autowired vs allArgConstructor

  • 생성자 주입의 장점
    • 순환 참조 방지
    • 테스트 코드 작성 편리
    • 품질 좋은 코드
    • immutable 특성
      • 필드 주입은 객체에 final을 선언할 수 없어 객체가 변할 수 있다.

0개의 댓글