스프링 핵심

이재호·2022년 12월 1일
0

왜 ? 생겼는가

  • 스프링은 자바가 가진 객체 지향 언어의 특징을 극대화하는 프레임 워크이다.
  • 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도움을 준다.

원래는 EJB쓰다가 EJB가 객체 지향 특징을 아주 망쳐놨었다고 한다.
그럼 좋은 객체 지향 프로그래밍은 뭘까?

  • 객체들이 모여서 서로 독립적이면서 협력가능하고 컴퓨터를 부품을 갈아 끼우듯이 하나의 변경이 다른 것들에 미치는 영향을 최소화해야 한다.

새로운 기능이 추가되어도 클라이언트를 바꿀 필요가 없다.

다형성이 왜 중요한가?

!역할과 구현을 분리 했기 때문이다.

역할 = 인터페이스
구현 = 인터페이스를 구현한 클래스

좋은 객체 지향 설계의 5가지 원칙 솔리드(SOLID)

  1. SPR- Single Responsibilty Principle 단일 책임 원칙
    하나의 클래스는 하나의 책임만 가진다.
    변경이 있을 때, 파급 효과가 적으면 단일 원칙을 잘 지키는 것이다.
  1. OCP- Open/Closed Principle 개방/폐쇄 원칙
    소프트웨어는 확장에는 열려 있으나 변경에는 닫혀있어야 한다.
    이를 이행할려면 다형성만으로는 불가능하다.
    별도의 조립자가 필요한데, 이 조립자가 바로 Spring이다.
  1. LSP- Liskov Substitution Principle 리스코프 치환 원칙
    객체는 프로그램의 정확성을 지키면서 하위 타입 인스턴스로 바꿀 수 있어야 한다.
    악셀을 구현했는데 차가 뒤로 간다면? 이것을 지키지 않은 것이다.
    느리더라도 앞으로 가야 리스코프 원칙을 지킨 것이다.
  1. ISP- Interface segregation Principle 인터페이스 분리 원칙
    특정 클라이언트를 위한 여러 개의 인터페이스로 작게 작게 나누는게 좋다.
  1. DIP- Dependency Inversion Principle 의존관계 역전 원칙
    제일 중요하다. 역할에 의존해야 한다. 클라이언트가 인터페이스에 의존해야지 구현체에 의존하면 안된다. 근데 여기서도 Spring이 필요하다.
  • 의존 관계 주입
    애플리케이션 실행 시점(런타임)에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존 관계가 연결되는 것을 의존관계 주입이라 한다.
    AppConfig.class 또는 Spring이 상황에 맞게 의존관계를 연결해주도록 코드를 작성하는 것.

ApplicationContext?
BeanFactory의 모든 기능을 상속받아서 제공하는
고마운 스프링의 핵심기능이다. 빈을 관리, 빈을 검색

뿐만 아니라
MessageSource(국제화 기능)
EnvironmentCapable(환경 변수)
ApplicationEventPublish(애플리케이션 이벤트)
ResourceLoader("편리한 리소스 조회)
라는 부가기능을 갖고 있음.

*의존관계 주입의 4가지 방법

생성자 주입 = 불변 필수 값에 주로 사용된다.
근데 생성자가 한 개가 있으면 Autowired를 생략해도 된다.

수정자 주입(setter)

필드 주입 필드에 Autowired하나만 붙여주면 된다.
아주 쉽지만 외부에서 변경이 불가능해서 테스트하기 어렵다.
쓰면 안됌 !!!
근데 test 코드나 configuration같은 곳에서는 사용함.

일반 메서드 주입
아무 메서드나

profile
에라 모르겠다~ i love it~

0개의 댓글