728x90
반응형
728x90
반응형
Spring Framework DI https://hoooon-s.tistory.com/197?category=1069858 [Spring] Inversion of Control & Dependency Injection Spring Framework 스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다. 자바로 서비스를 개발할 때 비즈니스 로직뿐 아니라 트랜잭션 등의 로직까지 작성해야 하는 부 hoooon-s.tistory.com AOP https://hoooon-s.tistory.com/198?category=1069858 [Spring] AOP - Aspect Oriented Programming AOP (Aspect Oriented Programming) 관점 지향 프로그래밍..
PSA (Portable Service Abstraction) 환경의 변화에 관계없이 일관된 방식의 기술 접근 환경을 제공하려는 추상화 구조 즉, 일부 코드 변경만으로도 완전히 다른 기술로 동작이 가능한(Portable) 서비스 추상화(Service Abstraction) 구조이다. Tomcat & Netty 간단한 gradle 의존성 변경으로 tomcat 또는 netty 사용이 가능하다. // tomcat dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' } // netty dependencies { implementation 'org.springframework.boot:spring-boot-starter-..
AOP (Aspect Oriented Programming) 관점 지향 프로그래밍 흩어진 Aspect를 모듈화할 수 있는 프로그래밍 기법이다. 동일한 색상의 선을 중복되는 메서드 & 필드 & 코드라고 가정할 때, 여러 클래스에 반복되서 사용 되기 때문에 흩어진 관심사(Crosscutting Concerns)이라 부른다. 그리고 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하는 것이 AOP다. Interceptor, Filter도 일종의 AOP이다. 또한, 중복되는 주황색 부분의 수정이 생기면 A, B, C 클래스 모두 수정을 해야 한다. 이는 SOLID 원칙 중 SRP(Single Responsibility Programming)에 위반된다. Spring AOP 스프..
Spring Framework 스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다. 자바로 서비스를 개발할 때 비즈니스 로직뿐 아니라 트랜잭션 등의 로직까지 작성해야 하는 부담감을 없애고자 EJB(Enterprise JavaBeans)를 사용하였다. EJB를 사용하면서 트랜잭션 등의 로우 레벨 로직 개발 부담은 줄었지만 이런 기능을 사용하기 위해 거대한 EJB를 extends 하거나 implement 하게 되어 간단한 서비스가 무겁게 변하게 되었다. 자바의 기본적인 객체지향에 집중하고, 특정 클래스나 라이브러리에 종속되지 않는 POJO로 코드를 작성하여 이 문제를 해결하고자 하였고 스프링 프레임워크가 탄생했다. 그래서 대부분의 사람들이 스프링을 설명할 때 경량화된, 가벼운 프레임..
Bean Scope 스프링은 빈이라는 개념으로 객체를 만들고 관리해준다. 스프링 빈은 기본적으로 싱글톤 스코프로 생성되기에, 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지된다고 알고 있다. 이렇게, 스프링 빈이 존재할 수 있는 범위를 빈 스코프라고 한다. Bean Scope종류 singleton : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. prototype : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더이상 관리하지 않는 짧은 범위의 스코프이다. request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. applic..
Jackson Library Spring 개발을 하다 보면, 컨트롤러 text/html 형식이 아닌 데이터 전달 목적으로 사용하고 싶을 때가 있다. 물론, plain/text 형식으로 보내도 상관은 없지만, 보통 데이터 구조를 표현하는 방식인 XML 또는 JSON 형태로 보낸다. 데이터의 구조를 표현하는 이유는 데이터 표현도 있지만, 사실상 데이터를 사용하는 대상이 편하게 사용하기 위해서다. Jackson은 JSON 데이터 구조를 처리해주는 라이브러리입니다. Gradle // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind compile group: 'com.fasterxml.jackson.core', name:..