반응형

Study 76

@Autowired vs @Inject vs @Resource

가장 많이 사용하는 @Autowired는 뭘까? 그와 비슷한 @Inject, @Resource는 무엇일까? 오늘 재직중인 회사에서 재미있는 여러가지 키워드를 들었습니다. 궁금한 건 못참으니 학습하여 정리해보겠습니다. 먼저 위에 3가지의 공통점은 의존 관계를 맺어주는 것을 말합니다. 해당 애노테이션을 사용한 후 클래스를 선언하면 작성한 클래스와 작성된 클래스는 의존 관계가 맺어지게 됩니다. @Component public class Load { @Autowired private SuperCar superCar; // superCar class DI @Inject private GoodCar goodCar; // GoodCar class DI } 다음으로 3가지의 차이점으로 아래의 표를 참조해주세요. @Au..

Study/spring 2021.02.18

[백기선님의 자바 라이브 스터디] 6주차 - 상속

www.youtube.com/watch?v=HLnMuEZpDwU 목표 자바의 상속에 대해서 학습하세요. 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속이란? 상위 클래스에서 선언 된 변수나 메서드를 하위 클래스에서 동일하게 사용할 수 있다. 자바 상속은 extends 를 사용합니다. 모든 클래스는 Object 객체를 상속받고 있습니다. public class Study extends Basic { // 상속 } 사용하는 이유? 코드의 재사용성을 높여주고 클래스 간 계층구조를 분류하고 관리하기 편해진다. 상속에는 여러가지 종류가 있습니다...

Study/java 2021.02.17

[도서] Object - 객체 설계

Object 도서를 구입 후 정리 시작! Object 도서는 예제 소스와 함께 이론이 정리되있기 때문에 모든 예제 소스는 github에 있습니다. 이 블로그는 github에서 작성한 글을 정리하여 옮겨놓은 글입니다. 문제가 있는 코드 모든 소프트웨어 모듈에는 세 가지 목적이 있다. 실행 중에 제대로 동작하는것 변경을 위해 존재하는 것 코드를 읽는 사람과 의사소통하는 것 객체 사이의 의존성의 문제가 있다. 객체지향 설계는 서로 의존하면서 협력하는 객체들의 공동체를 구축하는 것 애플리케이션의 기능을 구현하는 데 필요한 최소한의 의존성만 유지하고 불필요한것 의존성을 제거하는 것 이 코드는 결합도가 높은 코드입니다. 좋은 설계는 결합도를 낮춰 변경이 용이한 설계를 만드는 것입니다. 설계 개선하기 개선방법 각 객..

Study/java 2021.01.05

[백기선님의 자바 라이브 스터디] 4주차 - 선택문과 제어문

www.youtube.com/watch?v=HLnMuEZpDwU 목표 자바가 제공하는 다양한 연산자를 학습하세요. 학습할 것 선택문 제어문 정리하기에 앞서 모든 소스는 github에 있습니다. 선택문 자바에서 선택문은 크게 if문과 switch문 2가지가 있습니다. 먼저 if문에 대해서 알아보겠습니다. if문 if문은 크게 3가지 형태로 사용할 수 있습니다. if ( {조건문} ) { 로직 } if 문 내의 조건이 참일 경우 로직을 실행합니다. if ( {조건문} ) { 로직1 } else { 로직2 } if 문 내의 조건이 참일 경우 로직1을 실행합니다. if 문 내의 조건이 거짓일 경우 로직2를 실행합니다. If ( {조건문} ) { 로직1 } else if ( {조건문} ) { 로직2 } else ..

Study/java 2020.12.28

[백기선님의 자바 라이브 스터디] 3주차 - 연산자

www.youtube.com/watch?v=HLnMuEZpDwU 목표 자바가 제공하는 다양한 연산자를 학습하세요. 학습할 것 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 간단한 용어 정리 정리하기에 앞서 관련용어를 정리해보겠습니다. 연산 ( operations ) 프로그램에서 데이터를 처리하여 결과를 얻어내는 것 연산자 ( operator ) 연산에 사용되는 부호, 기호 피연산자 ( operand ) 연산에 대상이되는 데이터 연산식 ( expressions ) 피연산자와 연산자로 연산을 하는 과정 public void expressi..

Study/java 2020.12.27

[백기선님의 자바 라이브 스터디] 2주차 - 자바 데이터 타입, 변수 그리고 배열

www.youtube.com/watch?v=HLnMuEZpDwU 목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입이란? primitive type 프리미티브란 원시적인 이라는 뜻입니다. 그럼 원시적인 타입이라는 뜻이 되겠네요. Java에서는 메모리에 직접 값을 할당하는 변수를 프리미티브 타입이라고 합니다. 프리미티브 타입의 변수를 할당하면 JVM의 메모리 즉, Runtime Data Areas의 stack 영역에 저장됩..

Study/java 2020.12.23

[백기선님의 자바 라이브 스터디] 1주차 - JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.

www.youtube.com/watch?v=HLnMuEZpDwU 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 JVM이란 무엇인가? Java Virtual Machine 영어를 그대로 해석하면 자바 가상머신입니다. 가상머신의 장점은 새로운 가상 환경을 띄워동작할 수 있기 때문에 OS에 상관없이 동작시킬 수 있습니다. 그러한 가상 환경을 이용하여 자바 바이트코드를 실행시킬 수 있는 환경을 제공해줍니다. JVM이 없다면? 내가 생성한 파일을 컴파일하고 나온 바이트코드들이 OS마다 다릅니다. 이 말은 즉 Window에..

Study/java 2020.12.21

[Hateoas] Rest API를 구현해보자

지난 글에서는 Rest API가 무엇인지? 우리가 Rest API로 알고 사용했던 것이 RestAPI가 아니었고 HttpAPI 였다는 것을 정리하였습니다. 이번 글에서는 Rest API를 직접 구현해보겠습니다. 모든 소스는 github에 올려두었습니다. 개발자는 소스로 대화하고 설명하는 것이 가장 쉽다! build.gradle 최소 아래와 같은 의존성을 추가해줍니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-hateoas' compileOnly 'org.projectlombok:lombok' a..

Study/spring 2020.12.17

Rest API란?

Rest API에 대해서 정리해보겠습니다. 우리가 흔히 알고 있는 Rest API를 과연 Rest API로 사용하고 있는지 알아보겠습니다. 모든 소스는 github에 올려두었습니다. 참조 www.youtube.com/watch?v=RP_f5dMoHFc Rest API란? Rest REpresentational State Transfer API Application Programming Interface 먼저 Rest에 대해서 알아보겠습니다. Rest의 풀네임을 해석하면 재현상 상태 전송 입니다. 좀 더 말을 풀어본다면 분산 하이퍼미디어 시스템을 위한 아키텍쳐 스타일입니다. 좀 더 쉽게한다면 웹을 위한 아키텍쳐 스타일입니다. Rest를 구성하는 스타일 client-server Client Server 구조..

Study/spring 2020.12.16

Spring Triangle [IoC, AOP, PSA] - 3탄 PSA편

Java개발자로 전향한지 4년차가 되었습니다. 문득 저에 대해서 돌아보는 시간을 강제로 갖게되었고 난 개발자로써 살아가고 있는가에 대해서 궁금해졌습니다. 1편 IoC편 2편 AOP편 3편 PSA편 모든 소스는 github에 올려두었습니다. 나에게 질문을 해보았습니다. 기초는 튼튼한가? 자바에 대해서 얼만큼 알고 있지? Spring은? 블로그를 시작한지 한달이 조금 넘어가는 시점에서 다시 개념을 정리하고 복습하는 의미에서 되돌아가기로 하였습니다. 이번 글에서는 Spring Triangle 중 하나인 PSA에 대해서 정리해보겠습니다. PSA란? Portable Service Abstraction 그대로 번역하자면 호환성있는 서비스 추상화이다. 무슨 의미야 한국말인데 무슨말이야? 조금 더 이해하기 쉽게 설명하..

Study/spring 2020.12.15

Spring Triangle [IoC, AOP, PSA] - 2탄 AOP편

Java개발자로 전향한지 4년차가 되었습니다. 문득 저에 대해서 돌아보는 시간을 강제로 갖게되었고 난 개발자로써 살아가고 있는가에 대해서 궁금해졌습니다. 1편 IoC편 2편 AOP편 3편 PSA편 모든 소스는 github에 올려두었습니다. 나에게 질문을 해보았습니다. 기초는 튼튼한가? 자바에 대해서 얼만큼 알고 있지? Spring은? 블로그를 시작한지 한달이 조금 넘어가는 시점에서 다시 개념을 정리하고 복습하는 의미에서 되돌아가기로 하였습니다. 이번 글에서는 Spring Triangle 중 하나인 AOP에 대해서 정리해보겠습니다. AOP란? Aspect Oriented Programming 관점 지향 프로그램입니다. 처음에 이 말만 듣고 아... 그렇쿠나 무슨말이구나? 머리가 하얘졌었습니다. 간단하게 이..

Study/spring 2020.12.14

Spring Triangle [IoC, AOP, PSA] - 1편 IOC편

Java개발자로 전향한지 4년차가 되었습니다. 문득 저에 대해서 돌아보는 시간을 강제로 갖게되었고 난 개발자로써 살아가고 있는가에 대해서 궁금해졌습니다. 1편 IoC편 2편 AOP편 3편 PSA편 모든 소스는 github에 올려두었습니다. 나에게 질문을 해보았습니다. 기초는 튼튼한가? 자바에 대해서 얼만큼 알고 있지? Spring은? 블로그를 시작한지 한달이 조금 넘어가는 시점에서 다시 개념을 정리하고 복습하는 의미에서 되돌아가기로 하였습니다. 이번 글에서는 Spring Triangle 중 하나인 IoC에 대해서 정리해보겠습니다. IoC란? Inversion Of Control 그대로 해석하자면 제어의 역전입니다. 말 그대로 제어를 역전시키는 방법입니다. 개발자는 소스로 얘기하자는 주의라서 예제소스를 작..

Study/spring 2020.12.13

실전 자바 소프트웨어 개발 정리 - 3

모든 소스는 github에 올려두었습니다. 문서 관리 시스템 목표 문서 관리 기능 설계의 핵심은 상속 관계, 즉 어떻게 클래스를 상속하거나 인터페이스를 구현하는가에 달렸다. 문서관리 기능을 제대로 설계하려면 리스코프 치환 원칙을 알아야한다. 언제 상속을 사용해야 하는지와 관련해서는 '상속보다 조합' 원칙도 알아야한다. 유지보수가 쉽고 좋은 테스트를 만드는 방법을 활용해 기존에 배운 자동화된 코드 구현 지식을 확장한다. 설계 다양한 방법으로 설계가 가능하므로 다양한 설계와 모델링 중 한 가지를 선택한다. 테스트 주도 개발(TDD)은 프로그램을 시작하는 아주 좋은 방법 중 하나이며 이미 예제를 풀어보면서 사용한 방법이다. 임포터 다양한 종류의 문서를 임포트하는 것이 문서 관리 시스템의 핵심 기능이다. 파일의..

Study/java 2020.11.18

실전 자바 소프트웨어 개발 정리 - 2

모든 소스는 github에 올려두었습니다. 입출금 내역 분석기 확장판 목표 코드베이스에 유연성을 추가하고 유지보수성을 개선하는 데 도움을 주는 개방/패쇄 원칙(open/closed principle (OCP)) 을 배운다. 언제 인터페이스를 사용해야 좋을지를 설명하는 일반적인 가이드라인과 높은 결합도를 피할 수 있는 기법도 배운다. 자바에서 언제 API에 예외를 포함하거나 포함하지 않을지를 결정하는 자바의 예외 처리 방법을 배운다. 메이븐, 그레이들 같은 검증된 빌드 도구를 이용해 자바 프로젝트를 시스템적으로 빌드하는 방법도 배운다. 개방/패쇄 원칙 특정 금액 이상의 모든 입출금 내역을 검색하는 메서드를 구현해보자. 간단한 findTransactions() 메서드를 포함하는 BankTransactionF..

Study/java 2020.11.15

실전 자바 소프트웨어 개발 정리 - 1

책을 읽으며 소스는 github에 올려두었습니다. 이 글에서는 프로젝트( 입출금 내역 분석기 )를 만들면서 SRP에 대해서 알아보겠습니다. KISS 원칙 keep it short and simple 응용프로그램 코드를 한 개의 클래스로 구현한다. 코드 유지보수성과 안티 패턴 코드 유지보수성을 높이기 위해 노력해야한다. 특정 기능을 담당하는 코드를 쉽게 찾을 수 있어야 한다. 코드가 어떤 일을 수행하는지 쉽게 이해할 수 있어야 한다. 새로운 기능을 쉽게 추가하거나 기존 기능을 쉽게 제거할 수 있어야 한다. 캡슐화(encapsulation)가 잘 되어 있어야 한다. 즉 코드 사용자에게는 세부 구현 내용이 감춰져 있으므로 사용자가 쉽게 코드를 이해하고, 기능을 바꿀 수 있어야한다. 새로운 요구 사항이 생길 때..

Study/java 2020.11.14
728x90
반응형