Java, Spring/스프링 핵심 원리 기본 Java, Spring/스프링 핵심 원리 기본 2022. 8. 5. 1-4. 객체 지향 설계와 스프링 DI 로 OCP, DIP를 가능하게 지원한다. 모두 인터페이스를 먼저 놓고 구현체를 구현하게 되면 만약 우리가 DB를 정하지 않은 상태더라도 인터페이스를 넣어두면 다른 것 부터 개발 할 수 있다. 이상적으로는 인터페이스의 도입이 좋지만 인터페이슬르 남발하면 추상화라는 비용이 발생한다. ( 이 떄 비용은 성능에 대한 게 아니라 일단 단순하게 인터페이스만들고 구현체도 만들어야함. 또한 추상화가 되어버리면 개발자 코드를 한번 더 열어봐야됨. ) 런타임에 연결되므로 코드 열면 인터페이스만 보이는데 구현체까지 한 번더 들어가야함. -> 이런 단점도 있으므로 장점이 더 클때만 사용... 팁!!!!!: 더 이상 기능을 확장할 가능성이 없으면 바로 구체 클래스를 쓴다. 만약 향후 필요하다면 리팩터링하여 인터페이스로 구.. Java, Spring/스프링 핵심 원리 기본 2022. 8. 5. 1-3. 좋은 객체 지향 설계의 5가지 원칙(SOLID) OCP, DIP가 가장 중요 1. SRP - 책임이란 것이 실무에서는 좀 애매하다. ( 중요한 판단의 기준은 변경이다. 파급효과가 적으면 Good ) 변경=바꿔야되는 코드양. - ex) 코드 하나에 3만줄 ... 2. OCP 이 사진을 다시 보면 이해가 쉽다. 자동차 역할의 인터페이스는 여러 종류의 차로 확장 가능하지만 아무리 확장되더라도 운전자 역할의 코드를 바꿀 필요가 없다. 다형성을 사용하려하면 OCP 원칙을 지킬 수 없다. !! -> 문제를 어떻게 해결 할 까? -> 스프링의 DI를 받자!!!!!!!!!!!!! 3. LSP 업캐스팅이 되야한다.? 정도로 이해함. 기능적으로 보장되어야함. ( 엑셀은 뒤로가게 구현하면 LSP 위반 -> 엑셀의 기능이 보장 되어야함. ) 4. ISP - 자동차 인터페이.. Java, Spring/스프링 핵심 원리 기본 2022. 8. 5. 1-2. 좋은 객체 지향 프로그래밍이란? 핵심 : 1. 객체들의 모임, 객체는 메시지를 주고 받고 데이터를 처리할 수 있다. ( 객체끼리 협력할 수 있다. ) 2. 유연하고 변경이 용이하다. ( 레고 블럭을 조립하듯이, 키보드 마우스를 갈아끼우듯이 ) 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법. # 다형성 - 운전자는 차가 바뀌어도 운전을 할 수 있다. ( 구현만 바뀌었을 뿐 ) - 각각 자동차들은 자동차역할의 인터페이스를 따라서 만들었기 때문에. - 왜 자동차 인터페이스와 구현체를 분리 했을까? ( 결국엔 운전자를 위해서 ) - 차가 내부적으로 바뀌어도( 새로운 기능을 추가해도 ) 운전자에게 영향X - 역할과 구현으로 세상을 구분했기 때문에 역할을 누가 할지는 상관이 없다. ( 다른 대상으로 대체 가능 ) 구현보다 인터페이스 설.. Java, Spring/스프링 핵심 원리 기본 2022. 8. 5. 1-1. 스프링이란? 스프링만 쓰지 않음 -> 스프링부트를 통해서 사용. 스프링부트는 기본으로 무조건 사용함. - 예전에는 스프링을 쓰면 빌드를 하고 톰켓서버를 별도를 설치하여 빌드된 걸 넣고 띄우고 복잡했다. - 근데 지금은 스프링부트가 빌드하고 서버에 자동으로 띄워줌. - starter만 쓰면 연관있는 라이브러리를 다 땡겨줌. ( 예전엔 필요한 라이브러리 하나하나 다 땡김 ) - 과거에는 3rd 파티 라이브러리 버전을 다 따져서 구성했어야했지만 지금은 자동으로 구성해줌. - 모니터링에 필요한 메트릭 등을 기본적으로 제공 스프링부트는 스프링과 별도로 사용불가. 그래도 스프링의 최고 핵심은 IoC/DI 이건 핵심이 아니라 결과물일뿐 스프링은 객체 지향의 장점을 극대화 할 수 있게 만들 수 있게 한 프레임워크 ( EJB는 상속.. 이전 1 2 3 4 다음