스프링

자바에서는 표준 스펙, 상용, 오픈소스를 합해서 사용방식과 형식은 다르지만 목적과 기능이 비슷한 제품이 존재하는데 특정한 환경과 상황에 따라 접근가능한 기술이 달라진다면 실제로 개발하는 데 있어서 문제가 발생할 것이다. PSA(Portable Service Abstraction) 스프링의 3대 요소 중 하나로 일관성 있는 추상화를 의미하는데 환경과 세부 기술의 변화와 관계없이 일관된 방식으로 기술에 접근할 수 있게 해 주겠다는 것을 의미한다. 스프링에서는 어떻게 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용할 수 있게 지원해 주는지 한번 알아보자. 서비스 추상화의 개념에 맞추어서 리팩터링 한 기능에는 아래와 같은 장점을 가지게 된다. 각 메서드가 자신의 작업에만 충실하게 작동한다..
✅ 스프링의 3대 기반 기술중 하나인 관점 지향 프로그래밍(AOP)에 대해서 알아보자 AOP를 제대로 이해하고 활용하기 위해서는 등장하게 된 배경과 스프링의 도입 이유 적용함으로 얻을 수 있는 장점에 대한 이해가 필요하다. 스프링에서 적용된 AOP 기능중 제일 인기가 있는것은 "선언적 트랜잭션 기능"으로 서비스 추상화를 통해 근본적인 문제 해결에 더욱 더 세련되게 깔끔한 방식으로 다듬을 수 있었다고 했다. 이제 스프링이 왜 도입했는지에 대한 이유를 보자 트랜잭션 코드의 분리와 DI를 통한 연결을 책에 수록된 예제를 통해서 직접 다루어봤는데 해당 공부를 통해서 알 수 있었던 사실은 다음과 같다. 비즈니스 로직에 충실한 코드 작성 비즈니스 로직을 담당하고 있는 Impl 클래스들의 경우 코드를 작성할 때 트랜..
✅ 지난 글에서... 스프링을 통한 싱글톤 레지스트리와 싱글톤 스코프에 대해서 알아보았다. 이번에는 제어의 역전에 대해서 깊이 들어가 보자! 📌 의존관계 주입 스프링의 IoC 방식의 핵심의도가 명확하게 들어내게 하기 위해 고안된 이름으로 오브젝트 레퍼런스가 외부로부터 주입받고 이를 통해 다른 오브젝트와 동적으로 의존관계가 설정되는 것이 핵심이다. 의존관계 주입은 그 근간이 되는 개념인 IoC와 함께 IoC/DI 컨테이너로 불리는데 주입이라는 개념에 맞게 자바에서는 메서드 실행 시 파라미터를 통해 오브젝트의 레퍼런스를 전달해 주는 방법이다 가장 손쉽게 사용하는 방식은 생성자 주입방식이다. # 의존관계 주입 예제 코드 Public class NewworldDao { private WorldMaker word..
✅ 지난 블로깅에서.. 거론했던 오브젝트 팩토리와 애플리케이션 컨텍스트와 이어서 연결되는데 직접 오브젝트 팩토리를 통해서 연결한것과 스프링의 @configuration 애노테이션을 통해 애플리케이션 컨텍스트로 사용하는 것과 테스트 결과로 보면 동일하다고 할 수 있는데 하지만 중요한 차이점이 있다. 📌 싱글톤 레지스트리 애플리케이션 컨텍스트를 통해 값을 반환받는다면 동일한 오브젝트를 반환받게 된다 왜 이렇게 작동할까? 그것은 스프링 프레임워크는 엔터프라이즈 시스템을 위해 고안된 기술로 요청이 올 때마다 계속 오브젝트를 생성한다면 서버가 그 부하를 감당하기 어려워지기 때문이다. 서블릿은 자바 엔터프라이즈 분야에서 가장 기본이 되는 서비스 오브젝트로 서블릿은 대부분의 멀티스레드 환경에서 싱글톤으로 동작된다. ..
📌 오브젝트 팩토리 팩토리는.. 객체의 생성방법을 결정하고 그렇게 제작된 오브젝트를 돌려주는 클래스를 팩토리라고 말한다. 디자인 패턴에서 특별한 문제를 해결하기 위한 추상 팩토리 패턴이나 팩토리 메서드 패턴과는 다르다 핵심 요소는 오브젝트의 생성과 생성된 오브젝트의 사용하는 역할과 책임을 분리하기 위해서다. 만든다는 개념과 사용한다는 개념은 분명히 다른 관심사이다. 팩토리는 설계도라고 할 수 있다. 어떤 오브젝트가 어떤 오브젝트를 사용하는지 정의해둔 코드라고 생각하면 된다. 📌 애플리케이션 컨텍스트 빈 팩토리 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈이라 한다. 빈의 생성과 관계설정의 제어를 담당하는 오브젝트를 빈 팩토리라고 가리키고 있다 애플리케이션 컨텍스트는 IoC가 적용된 ..
POJO 는? POJO는 순수한 자바 객체를 의미하는 개념으로 스프링에서 도입된 핵심 개념중 하나이다. 이 개념이 정립되게 된 이유는 전에도 말했던 EJB와 관련이 있다 EJB를 사용했을 때 어떠한 특정 기술에 종속되게 된 자바 코드는 당연히 유지보수가 어렵고 확장성이 떨어지게 된다 이렇게 된다면 자바의 강점인 객체지향의 장점을 살릴수 없게 되었다. 그래서 개발자들 사이에서 예전에 사용하던 순수한 자바 객체 지향성을 사용하던 시절로 회귀하자는 개념이 있어서 등장하게 되었다. POJO 를 사용하는 이유는 이미 위에서 서술한대로의 이유가 대부분 이긴 하지만 다시 재정리 하자면 이러하다. 특정한 환경에 종속적이지 않기 때문에 재사용이 가능하며 유연하게 확장할 수 있는 코드를 적성할 수 있다. 특정 종속 코드를..
라테르39
'스프링' 태그의 글 목록