본문 바로가기
728x90

Back-end/java spring34

Dependency Injection: 의존관계(의존성) 주입 개념 정리 DI의 정의 DI는 Dependency Injection의 줄임말로, 우리 말로는 의존관계 주입 또는 의존성 주입이라고 표현합니다. 의존이라고 하는 단어 자체가 관계 속에서 의존하는 느낌이기 때문에, 저는 의존관계 주입이라는 용어가 더 적합하다고 이해했습니다. 그렇다면, 여기서 말하는 의존관계가 무슨 말일 까요? "A가 B에 의존한다."라고 했을 때, 이것이 의미하는 바를 다음과 같은 설명을 통해 이해할 수 있었습니다. 의존대상 B가 변하면, 그것이 A에 영향을 미친다. - 토비의 스프링 3.1 즉, B의 기능이 추가 또는 변경될 때, A에 영향을 미치는 경우 "A가 B에 의존한다."라고 표현할 수 있는 것입니다. 그렇다면, Dependency Injection은 무엇일까요? 말 그대로 의존 관계를 주입.. 2022. 12. 27.
[Java] 자바 공부 - 4, package란? C++나 여타 다른 언어에서 프로젝트를 폴더에 나눠 관리하는 방식으로 코딩을 많이 진행했는데, 이번에 자바를 공부하니 패키지라는 단위로 소스 코드들을 나눠 관리하는 방식을 처음 접하게 되어서 공부 목적으로 자바 패키지에 대해 정리해보려 합니다. Java Package란? 자바 패키지(Java package)는 자바 클래스들을 여러 namespace로 정리하며, 소속된 각 class에 대해 고유한 namespace를 제공한다. 동일한 package 내의 class들은 서로의 package-private 및 protected 멤버들에 접근할 수 있다. 자바 패키지는 jar 파일이라는 압축 파일에 저장할 수 있으며, 클래스들을 하나씩이 아닌 묶음으로 더 빠르게 다운로드할 수 있다. - 위키백과 (자바 패키지).. 2022. 12. 26.
좋은 객체 지향 프로그래밍이란? 객체 지향 프로그래밍의 정의? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경에 용이하게 만들기 때문에, 대규모 소프트웨어 개발에 많이 사용된다. 유연하고 변경에 용이하다는 것의 의미란? 레고 블록을 조립하듯이 키보드, 마우스를 갈아 끼우듯이 컴퓨터 부품을 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법을 말한다!! 그것이 바로 다형성을 의미한다!! 다형성의 실세계 비유 실세계와 객체 지향을 1:1로 정확하게 매칭하기에는 무리가 있음 그래도 비유를 하는 것이 .. 2022. 12. 24.
좋은 객체 지향 설계의 5가지 원칙 (SOLID) SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리했다. SRP: 단일 책임 원칙 (single responsibility principle) OCP: 개방-폐쇄 원칙 (open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존 관계 역전 원칙 (Dependency inversion principle) SRP 단일 책임 원칙 - single responsibility principle 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도 있고, 작을 수도 있다. 문맥과 .. 2022. 12. 24.
Spring 이란? Spring의 생태계에는 다음과 같이 굉장히 다양한 기술들이 존재한다. 스프링 프레임워크 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술: 스프링 MVC, 스프링 WebFlux 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 테스트: 스프링 기반 테스트 지원 언어: 코틀린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용한다. 위와 같은 기능들을 제공하는 것을 통합해서 스프링 프레임워크라고 부르고, 강의에서는 그중에서도 핵심 기술에 대한 이해를 위주로 다룬다. 나머지는 이것에서 파생된 개념들이다. 지금 실무에서는 스프링 부트를 기본으로 깔고 들어간다고 함. 스프링 부트 스프링을 편리하게.. 2022. 12. 23.
[Java] 자바 공부 - 3, 리터럴(literal)의 개념과 자료형 간단 정리 리터럴(literal) Literal은 program에서 사용하는 모든 숫자(정수, 실수), 문자, 문자열, 논리 값 등을 의미한다. (ex. 10, 3.141592, 'A', "String", true, false 등...) Literal에 해당되는 값은 특정 메모리 공간인 상수 풀(constant pool)에 위치한다. 필요한 경우 constant pool에서 가져와 사용한다. constant pool에 저장할 때에 정수는 int type, 실수는 double type으로 저장 따라서 별도로 long type이나 float type으로 저장하고 싶은 경우 식별자(L, l, F, f)를 명시해줘야 한다. 프로그램의 로딩 과정에서 사용된 literal들이 constant pool에 저장되고, 이후에 사용.. 2022. 11. 30.
728x90