Spring_기초 (1강)_ 22.07.04(day01)
95년 Java
97년 window
95년 Nestcape
야후 코리아
이 당시 웹서버 개발에 각광받던 Java 언어
데이터베이스와 통신을 연결하려고 하니 굉장히 복잡했었다.
EJB의 등장 이를 더 편리하게 할수 없을까 고민하던 개발자들이 프레임워크화를 하여 발전시킨 것이
스프링 이다.
라이브러리 : 메서드나 함수등의 기능을 제공 [ ex) lombok 라이브러리 ]
프레임워크 : 객체 생성과 제어 실행권 까지 프레임 워크가 가진다.
// ex) 자바 메인 메서드에서 프로그램을 돌리지 않고 스프링에서 돌린다.
결합도는 낮아야 하고, 응집도는 높아야 한다.
-- 유연하고 변경이 쉬워야 한다.
* 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만든다. [ 핵 심 ]
다형성 안에 상속이라는 개념이 들어간다.
뮤지컬 캐스팅 테이블
- 역할들을 보면 배우들이 다른 것을 확인 할 수 있다.
- 배역이라는 역할들은 날짜마다 구현하는 구현체 [배우] 가 다르다.
언제든지 다형성을 이용하여 쉽게 갈아 낄수 있도록 하는 것 = 객체지향
SOLID : 강력한 객체지향 프로그램을 만들기위해 지켜야 할 5가지 원칙
ex )
- sql 전송을 담당 하는 클래스
- 출력과 sql 전송을 담당하는 클래스와의 연결을 담당하는 클래스
- 출력을 담당하는 클래스
- 확장에는 열려있으나 // - 변경에는 닫혀 있어야 한다. :
☆ 스프링의 핵심 원칙
중요 !!
***** D.I : 의존성 주입 ->
소프트웨어 엔지니어링에서 의존성 주입(dependency injection)은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다.
"의존성"은 예를 들어 서비스로 사용할 수 있는 객체이다.
클라이언트가 어떤 서비스를 사용할 것인지 지정하는 대신, 클라이언트에게 무슨 서비스를 사용할 것인지를 말해주는 것이다.
"주입"은 의존성(서비스)을 사용하려는 객체(클라이언트)로 전달하는 것을 의미한다.
서비스는 클라이언트 상태의 일부이다.
클라이언트가 서비스를 구축하거나 찾는 것을 허용하는 대신 클라이언트에게 서비스를 전달하는 것이 패턴의 기본 요건이다.
의존성 주입의 의도는 객체의 생성과 사용의 관심을 분리하는 것이다. 이는 가독성과 코드 재사용을 높혀준다.
의존성 주입은 광범위한 역제어 테크닉의 한 형태이다.
어떤 서비스를 호출하려는 클라이언트는 그 서비스가 어떻게 구성되었는지 알지 못해야 한다.
클라이언트는 대신 서비스 제공에 대한 책임을 외부 코드(주입자)로 위임한다.
클라이언트는 주입자 코드를 호출할 수 없다.
그 다음, 주입자는 이미 존재하거나 주입자에 의해 구성되었을 서비스를 클라이언트로 주입(전달)한다.
그리고 나서 클라이언트는 서비스를 사용한다.
이는 클라이언트가 주입자와 서비스 구성 방식 또는 사용중인 실제 서비스에 대해 알 필요가 없음을 의미한다.
클라이언트는 서비스의 사용 방식을 정의하고 있는 서비스의 고유한 인터페이스에 대해서만 알면 된다.
이것은 "구성"의 책임으로부터 "사용"의 책임을 구분한다.
(위키백과)