Spring & Java/Java
-
Spring 객체지향적으로 설계한 POJO를 유지하며 애플리케이션을 쉽고 효과적으로 개발할 수 있도록 지원하는 프레임워크라고 생각한다. 실패한 해결책 : EJB 자바 엔터프라이즈 시스템 개발이 어려웠던 가장 큰 이유는 근본적인 비즈니스 로직과 엔터프라이즈 기술이라는 두 가지 복잡합이 한데 얽혀 있기 때문이다. EJB의 기본 전략도 이 두가지 종류의 복잡함을 분리하는 것이었다. EJB는 기술적인 복잡함을 애플리케이션의 핵심 로직에서 일부분 분리하는 데 성공하긴 했다. 그러나 EJB라는 환경과 스펙에 종속되는 코드로 만들어져야 하는 더 큰 부담을 안게 되었다. EJB라는 틀 안에서 자바 코드를 만들게 강제함으로써 자바 언어가 원래 갖고 있던 장점마저 잃어버렸다는 사실이다. 비즈니스와 애플리케이션 로직의 복잡..
2. Spring 3대 요소Spring 객체지향적으로 설계한 POJO를 유지하며 애플리케이션을 쉽고 효과적으로 개발할 수 있도록 지원하는 프레임워크라고 생각한다. 실패한 해결책 : EJB 자바 엔터프라이즈 시스템 개발이 어려웠던 가장 큰 이유는 근본적인 비즈니스 로직과 엔터프라이즈 기술이라는 두 가지 복잡합이 한데 얽혀 있기 때문이다. EJB의 기본 전략도 이 두가지 종류의 복잡함을 분리하는 것이었다. EJB는 기술적인 복잡함을 애플리케이션의 핵심 로직에서 일부분 분리하는 데 성공하긴 했다. 그러나 EJB라는 환경과 스펙에 종속되는 코드로 만들어져야 하는 더 큰 부담을 안게 되었다. EJB라는 틀 안에서 자바 코드를 만들게 강제함으로써 자바 언어가 원래 갖고 있던 장점마저 잃어버렸다는 사실이다. 비즈니스와 애플리케이션 로직의 복잡..
2023.11.23 -
JVM < JRE < JDK JDK : 자바 개발 키트의 줄임말로 JRE에 컴파일러, 디버거 등 개발 도구를 포함하는 프로그램 JRE : 자바 실행 환경의 줄임말로 JVM에 자바 라이브러리와 기타 파일들이 결합된 자바를 실행하기 위한 프로그램. JVM : 자바 가상 머신으로 애플리케이션을 클래스 로더를 통해 읽어 들여 API와 함께 실행 JVM 구성 (class Loader) 1. java 파일을 Java 컴파일러가 컴파일하면 .class 파일인 바이트 코드가 생성 2. 클래스 파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리 영역인 Runtime Data Area에 적재하는 역할을 한다. (execution engine) 1. 클래스 로더에 의해 메모리에 적재된 클래스(바이트 코드)들을 기계어로 ..
5. JVMJVM < JRE < JDK JDK : 자바 개발 키트의 줄임말로 JRE에 컴파일러, 디버거 등 개발 도구를 포함하는 프로그램 JRE : 자바 실행 환경의 줄임말로 JVM에 자바 라이브러리와 기타 파일들이 결합된 자바를 실행하기 위한 프로그램. JVM : 자바 가상 머신으로 애플리케이션을 클래스 로더를 통해 읽어 들여 API와 함께 실행 JVM 구성 (class Loader) 1. java 파일을 Java 컴파일러가 컴파일하면 .class 파일인 바이트 코드가 생성 2. 클래스 파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리 영역인 Runtime Data Area에 적재하는 역할을 한다. (execution engine) 1. 클래스 로더에 의해 메모리에 적재된 클래스(바이트 코드)들을 기계어로 ..
2023.11.23 -
스프링과 객체 지향 1. 다형성이 가장 중요하다 2. 스프링은 다형성을 극대화해서 이용할 수 있게 도와준다. 3. 스프링에서 이야기하는 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 4. 스프링을 사용하면 마치 레고 블럭 조립 하듯, 공연 무대의 배우를 선택하듯 구현을 편리하게 변경할 수 있다. SRP (단일 책임 원칙) : 하나의 클래스는 하나의 책임만 가져야 한다. 중요한 기준은 변경이다, 변경이 있을 때 파급 효과가 적으면 SRP를 잘 따른것. OCP (개방 폐쇄 원칙) => 확장에는 열려있으나 변경에는 닫혀 있어야 한다. => 다형성을 활용하자 LSP ( 리스코프 치환 원칙 ) ISP (..
1. 핵심원리 기본편스프링과 객체 지향 1. 다형성이 가장 중요하다 2. 스프링은 다형성을 극대화해서 이용할 수 있게 도와준다. 3. 스프링에서 이야기하는 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 4. 스프링을 사용하면 마치 레고 블럭 조립 하듯, 공연 무대의 배우를 선택하듯 구현을 편리하게 변경할 수 있다. SRP (단일 책임 원칙) : 하나의 클래스는 하나의 책임만 가져야 한다. 중요한 기준은 변경이다, 변경이 있을 때 파급 효과가 적으면 SRP를 잘 따른것. OCP (개방 폐쇄 원칙) => 확장에는 열려있으나 변경에는 닫혀 있어야 한다. => 다형성을 활용하자 LSP ( 리스코프 치환 원칙 ) ISP (..
2022.08.02 -
1. 클래스(class) 자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다. 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 됩니다. 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성됩니다. 즉, 필드(field)란 클래스에 포함된 변수(variable)를 의미합니다. 또한, 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다. 클래스는 생성된 객체의 필드를 초기화해주는 특별한 메소드인 생성자(constructor) 2. 생성자(constructor) 클래스를 가지고 객체를 생성하면, 해당 객체는 메모리에 즉시 생성됩니다. 하지만 이렇게 생성된 객체..
3. 개념1. 클래스(class) 자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다. 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 됩니다. 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성됩니다. 즉, 필드(field)란 클래스에 포함된 변수(variable)를 의미합니다. 또한, 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다. 클래스는 생성된 객체의 필드를 초기화해주는 특별한 메소드인 생성자(constructor) 2. 생성자(constructor) 클래스를 가지고 객체를 생성하면, 해당 객체는 메모리에 즉시 생성됩니다. 하지만 이렇게 생성된 객체..
2022.07.18 -
간단하게 알아보는 웹 개발 방식 3가지 1. 정적 페이지 : 웹브라우저 localhost:8080/hello-static.html을 url에 입력 -> 내장 톰캣 서버가 요청을 받고 이를 스프링에 전달 -> 그러면 controller에서 우선순위로 hello-static이 있는지 검색 후 존재하지 않다면 resources에서 검색 -> 찾으면 이를 변환하지 않고 그대로 웹브라우저로 처리 2. MVC (Model, View, Controller) : localhost:8080/hello-mvc을 url에 입력 -> 내장 톰캣 서버 -> helloController에서 hello-template(View로 지정한 html 파일명)를 return, (model의 키는 name이고 값은..
3. 스프링 웹 개발 기초간단하게 알아보는 웹 개발 방식 3가지 1. 정적 페이지 : 웹브라우저 localhost:8080/hello-static.html을 url에 입력 -> 내장 톰캣 서버가 요청을 받고 이를 스프링에 전달 -> 그러면 controller에서 우선순위로 hello-static이 있는지 검색 후 존재하지 않다면 resources에서 검색 -> 찾으면 이를 변환하지 않고 그대로 웹브라우저로 처리 2. MVC (Model, View, Controller) : localhost:8080/hello-mvc을 url에 입력 -> 내장 톰캣 서버 -> helloController에서 hello-template(View로 지정한 html 파일명)를 return, (model의 키는 name이고 값은..
2022.07.14 -
🏴☠️ TDD Tip 실패하는 테스트를 만들어라 → 빨간색 꼼수를 써서 테스트를 통과하게 만들어라 → 그린 리팩토링을 하라 → 블루 👉🏻Tip 2 ❗ ctrl + 함수 클릭 수정할 곳 드래그 후 alt + shift + r 누르고 이름 변경하면 한번에 모두 변경됨. 리팩터링은 동작을 변경하지 않으면서도 보다 간편하게 유지 관리하고 파악하며 확장할 수 있도록 코드를 수정하는 프로세스리팩토링의 목적은 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다. 👉🏻왜 리팩토링을 해야 하는가? 코드의 구조가 망가지는 효과는 누적된다. 코드의 디자인을 유지하도록 도와준다. 중복을 제거함으로써 각각의 작업에 대한 코드가 오직 한 곳에만 있게 할 수 있다. 소프트웨어의 디자인을 ..
2. Java (TDD, GCC)🏴☠️ TDD Tip 실패하는 테스트를 만들어라 → 빨간색 꼼수를 써서 테스트를 통과하게 만들어라 → 그린 리팩토링을 하라 → 블루 👉🏻Tip 2 ❗ ctrl + 함수 클릭 수정할 곳 드래그 후 alt + shift + r 누르고 이름 변경하면 한번에 모두 변경됨. 리팩터링은 동작을 변경하지 않으면서도 보다 간편하게 유지 관리하고 파악하며 확장할 수 있도록 코드를 수정하는 프로세스리팩토링의 목적은 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다. 👉🏻왜 리팩토링을 해야 하는가? 코드의 구조가 망가지는 효과는 누적된다. 코드의 디자인을 유지하도록 도와준다. 중복을 제거함으로써 각각의 작업에 대한 코드가 오직 한 곳에만 있게 할 수 있다. 소프트웨어의 디자인을 ..
2022.07.14