Framework/Spring
-
[Spring] Ioc(Inversion of Control)Framework/Spring 2021. 8. 4. 17:49
IoC(Inversion Of Control) 스프링에서는 일반적인 Java객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에 모두 맡긴다. 개발자 -> 프레임워크로 제어의 객체 관리의 권한이 넘어 갔음으로 '제어의 역전'이라고 부른다. DI(Dependency Injection) 의존성으로 부터 격리시켜 코드 테스트에 용이하다. DI를 통하여, 불가능한 상황을 Mock과 같은 기술을 통하여, 안정적으로 테스트 가능하다. 코드를 확장하거나 변경 할 때 영향을 최소화한다.(추상화) 순환참조를 막을 수 있다.
-
[Spring] Spring BootFramework/Spring 2021. 7. 24. 22:46
스프링부트(Spring Boot) Spring Boot는 단순히 실행되며, 프로덕션 제품 수준의 스프링 기반 어플리케이션을 쉽게 만들 수 있다. =>프로덕션 제품 수준: 사용자에게 제공될 수 있는 제품 Spring Boot어플리케이션에는 Spring구성이 거의 필요하지 않다. Spring Boot java - jar로 실행하는 Java어플리케이션을 만들 수 있다. 스프링부트(Spring Boot)의 주요 목표 Spring개발에 대해 빠르고, 광범위하게 적용할 수 있는 환경 기본값 설정이 있지만 설정을 바꿀 수 있다. 대규모 프로젝트에 공통적인 비 기능 제공(보안, 모니터링 등) XML구성 요구사항이 전혀 없다.
-
[Spring/디자인패턴] 프록시 패턴Framework/Spring 2021. 7. 18. 22:43
프록시 패턴 프록시는 대리인이라는 의미로써, 뭔가를 대신 처리하는 것 프록시 클래스를 통해 대신 전달하는 형태로 설계되며, 실제 클라이언트는 프록시로 부터 결과를 받는다. 캐시의 기능으로도 활용이 가능하다. 프록시 패턴 예시 public interface IBrowser { Html show(); } public class Browser implements IBrowser { private String url; public Browser(String url){ this.url = url; } @Override public Html show() { System.out.println("browser loading html from:" + url); return new Html(url); } } Browser..
-
[Spring/디자인패턴] 어댑터 패턴Framework/Spring 2021. 7. 18. 22:07
어댑터 패턴 어댑터는 실생활에서 100v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코라고 불리는 변환기를 예로 들 수 있다. 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 한다. 어댑터 패턴 예시 public interface Electronic110V { void powerOn(); } public interface Electronic220V { void connect(); } public class HairDryer implements Electronic110V{ @Override public void powerOn() { System.out.println("헤어드라이기 110v on"); } } 헤어드라이어는 110v를 기반으로 동작한다. public class ..
-
[Spring/디자인패턴] 싱글톤 패턴Framework/Spring 2021. 7. 18. 21:42
싱글톤 패턴 싱글톤 패턴은 어떠한 클래스(객체)가 유일하게 1개만 존재할 때 사용한다. 이를 주로 사용하는 곳은 서로 자원을 공유할 때 사용하는데, 실물 세계에서는 프린터가 해당되며 실제 프로그래밍에서는 TCP Socket통신에서 서버와 연결된 connect객체에 주로 사용된다. 싱글톤 패턴 예제 public class SocketClient { private static SocketClient socketClient = null; private SocketClient(){ } public static SocketClient getInstance(){ if(socketClient == null){ socketClient = new SocketClient(); } return socketClient; } ..
-
[Spring/디자인패턴] 디자인패턴Framework/Spring 2021. 7. 17. 00:29
디자인 패턴 자주 사용되는 설계 패턴을 정형화하여 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 알고리즘과 유사하지만, 명확하게 정답이 있는 형태는 아니며 프로젝트의 상황에 맞추어 적용 가능하다. Gof 디자인 패턴 - Gof의 디자인 패턴은 총 23개이며 이를 잘 이해하고 활용한다면 경험이 부족하더라도 좋은 소프트웨어 설계가 가능하다. 디자인 장점 개발자(설계자) 간의 원활한 소통 소프트웨어 구조 파악 용이 재사용을 통한 개발 시간 단축 설계 변경 요청에 대한 유연한 대처 디자인 단점 객체지향 설계/구현 초기 투자 비용 부담 생성패턴 객체를 생성하는 것과 관련된 패턴으로, 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하고, 코드의 유연성을 높여준다. - Factory ..
-
[Spring] 객체지향 설계 5원칙 SOLIDFramework/Spring 2021. 7. 17. 00:08
응집도와 결합도 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높여야한다. 결합도 - 모듈간의 상호 의존 정도를 나타내는 지표로써, 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어 재사용 및 유지보수가 유리하다. 응집도 - 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 용이하다. SRP(Single Responsibility Principle) 단일 책임 원칙 - 어떠한 클래스를 변경해야 하는 이유는 한가지 뿐이여야한다. OCP(Open Closed Principle) 개방 폐쇄 원칙 - 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다. - 상위 클래스 또는 인터페이스를 중간..
-
[Spring] 객체지향 4가지Framework/Spring 2021. 7. 16. 23:52
캡슐화 캡슐화는 객체의 속성을 보호하기 위해 사용 Method 설계 - 속성이 선언되었으나 이의 상태를 변경하는 Method가 없다면 잘못 선언된 속성이다. - 실물 객체가 가진 기능을 모두 제공해주어야 한다. - 각각의 Method는 서로 관련성이 있어야 한다. - 객체 안의 Method는 객체 안의 속성을 처리해야 하며, 다른 객체를 전달받아 해당 다른 객체에 정의 된 속성을 직접 처리하면 안된다. - 단 Method에 실행에 필요한 값들은 객체의 형태가 아닌 매개변수의 형태로 전달되어져야한다. 장점 - 객체 지향의 패러다임 중 하나인 추상화를 제공한다. - 재 사용성 향상 무결성 - 보통의 캡슐화 코딩이라고 한다면, 주로 변수는 private로 선언하고 Method를 public으로 선언하는 형태를..