전체 글
-
유지보수를 위해 타입은 선택이 아니라 필수가 되어야합니다.기술/Python 2023. 1. 14. 18:35
개발하면서 항상 마주치는 상황이 있습니다. 내가 만들지 않았거나 너무 오래되서 기억이 잘 나지 않은 메서드나 변수를 가진 코드를 유지보수하는 문제입니다. 우리는 항상 유지보수의 문제와 맞닿아있기 때문에 유지보수하기 쉬운 코드를 목표하기도 해야합니다. 이 때 타입은 유지보수를 위한 최소 조건이라고 생각합니다. 타입을 적용하면 변수는 올바른 유형의 값만 할당할 수 있습니다. 이렇게 하면 오류를 방지하고 코드를 더욱 유지 관리할 수 있습니다. 예를 들어, "int"(정수) 유형의 변수가 있고 "string"(텍스트) 유형의 값을 할당하려고 하면 오류를 발생시킬 수 있습니다. 이것은 큰 문제가 되기 전에 실수를 일찍 발견하는 데 도움이 됩니다. 타입이 없을 때 발생할 수 있는 가장 큰 문제는 사람의 실수로 발생..
-
일반적인 Django 서비스는 단일 앱을 통해 개발해야합니다.기술/Django 2022. 12. 11. 20:22
Django의 프로젝트 구조 Django를 시작하면 아래와 같은 구조로 사용하게 됩니다. - project - namespace1 - models.py - migrations - urls.py - namespace2 - ... 네임스페이스를 하나 정의하고 해당 네임스페이스에서 사용되는 스키마, 뷰, URL를 정의하고 노출합니다. 이를 Django에서는 앱이라고 부르고 있습니다. 문제점 저는 앱을 보통 도메인을 나눠서 관리하면 좋을 것 같다고 생각하게 되면 나눕니다. 유저를 다루는 앱이 있고, 새로 물류와 관련된 기능을 작성해야 한다면 물류라는 앱을 만들고, 계약과 관련한 기능을 나누어 앱을 만드는 것과 같이 어느 정도 큰 단위의 도메인을 다루게 된다면 나누게 되었던 것 같습니다. 하지만 이렇게 앱을 나누..
-
빈 스코프기술/Java - 강의 정리 2022. 8. 5. 13:19
빈 스코프 스프링은 다양한 스코프를 지원한다. 싱글톤 - 기본 스코프, 단 하나만 존재한다. 프로토타입 - 빈을 요청할때마다 매번 생성한다. 주의해야할 점은 생성할 때만 관여하지만 소멸은 관리되지 않는다. 요청 - HTTP 요청 세션 - HTTP 세션 어플리케이션 - 서블릿 컨텍스트 싱글톤 빈과 프로토타입 빈을 함께 사용 시 싱글톤 빈 안에 프로토타입 빈을 주입받을 시 주입받을 때만 새로 생성되고, 이후부터는 새로 생성되지 않는다. 해결책 ObjectProvider 스프링에서 지정된 빈을 컨테이너에서 찾아주는 DL 서비스를 제공해주는 것이 ObjectProvider 이다. 편의 기능을 많이 제공해준다. private ObjectProvider objectProvider; public void logic(..
-
빈 생명주기 콜백기술/Java - 강의 정리 2022. 8. 5. 13:19
빈 생명주기 콜백 의존관계 주입이 끝난 시점을 제공하기 위한 다양한 기능을 제공한다. 또한 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 따라서 안전하게 종료 작업을 진행할 수 있다. 인터페이스 InitializingBean, DispossableBean 코드가 스프링 인터페이스에 의존하게 되는 문제가 있다. 초기화, 소멸 메서드의 이름을 변경할 수 없다. 내가 코드를 고칠 수 없는 외부 라이브러리에 적용할 수 없다. Bean initMethod, destroyMethod destroyMethod 의 특별한 동작 라이브러리에서 일반적으로 close , shutdown 이름으로 종료 메서드로 제공하기 때문에 destoryMethod 는 기본적으로 (inferred) 로 되어있는데 close 및 sh..
-
의존 관계 주입 방법기술/Java - 강의 정리 2022. 8. 5. 13:18
의존 관계 주입 방법 AutoWired Component 를 사용할 때 의존성을 주입하기 위해 사용된다. 생성자가 하나일 때 생략 가능하다. 의존 관계 주입 방법 생성자 주입 생성자 호출 시점에 딱 한번만 호출되는 것이 보장된다. 불변, 필수 의존관계에서 사용된다. 수정자 주입 선택, 변경 의존관계에서 사용된다. 필드 주입 외부에서 변경이 불가능해서 테스트하기 힘들다. DI 프레임워크가 없으면 아무것도 할 수 없다. 일반 메서드 주입 잘 사용하지 않는다. 옵션 처리 Autowired(required = false ) @Nullable Optional 조회되는 빈이 2개 이상일 때 타입으로 등록되는데 하나의 타입에 두개 이상의 빈이 등록되었을 때 에러가 발생한다. 해결 방법 Autowired 필드 명 매칭..
-
빈 생성 방법기술/Java - 강의 정리 2022. 8. 5. 13:18
빈 생성 방법 Bean, Configuration 수동으로 빈 컨테이너에 등록하는 방식이다. @Configuration public class ResourceConfig { @Bean public Resource resource() { return new ResourceImpl(); } } Component Component 어노테이션이 붙어있는 클래스를 찾아 자동으로 등록해주는 컴포넌트 스캔 기능을 이용해 등록하는 방식이다. @Component class ResourceImpl() { } 기본적으로 같은 패키지 하위의 Component 를 모두 찾아낸다. 스프링부트도 이 방법을 기본적으로 제공한다. 자동, 수동 실무 운영 기준 애플리케이션은 크게 업무 로직과 기술 지원 로직으로 나눌 수 있다. 업무 로..
-
토비의 스프링 - 5. DI ( Dependency Injection )기술/Java - 토비의 스프링 2022. 8. 3. 19:04
DI ( Dependency Injection ) IoC 라는 용어가 폭넓게 사용되는 언어이기 때문에 스프링 IoC 라고 해서는 다른 프레임워크와 차별화된 특징을 설명하기 어렵다. 때문에 의존관계 주입이라는 새로운 용어를 사용해서 스프링의 차별점을 확실히 설명할 수 있게 했다. Dependency ( 쉽게 풀어 쓰기 ) James Shore: Dependency Injection Demystified 의존관계는 쉽게 말하면 변수이다. 클래스 내에서 변수를 가지고 있으면 클래스가 그 변수를 의존한다는 뜻이다. Dependency Injection 의존관계 주입은 다음 세 가지 조건을 충족하는 작업을 말한다. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스만 의..
-
토비의 스프링 - 4. 제어의 역전 ( IoC )기술/Java - 토비의 스프링 2022. 8. 3. 18:04
제어의 역전 ( IoC ) DaoFactory 프로그램의 실행, 구성하는 부분을 나눈 관심사의 분리라고도 이야기할 수 있다고 생각하고, 구현 객체가 Factory 에 의해 결정된다는 부분을 보고 제어의 역전이라고 이야기할 수 있을 것 같다. 일반적으로 객체 생성, 연결, 관리, 사용을 프로그래머가 제어하지만 이를 외부에 위임하는 것을 제어의 역전이라고 한다. 대표적으로 제어의 역전이 사용되는 것이 프레임워크다. 라이브러리와 프레임워크 라이브러리는 사용하는 애플리케이션은 흐름을 직접 제어한다. 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 프레임워크가 흐름을 주도하는 중 개발자가 만든 애플리케이션 코드를 사용하도록 만드는 방식이다. Spring Application Context 스프..