반응형
목록
java (139)
[꼼꼼한 개발자] 꼼코더
👦🏻 객체 지향은 인간 지향이다 프로그래밍 언어의 발전사를 보면 개발자를 더욱 편하고 이롭게 하기 위한 과정이다. 기계중심의 기계어에서 조금 더 인간을 편하게 하는 어셈블리어 C, C++, 자바로 발전해 온 과정 모두 로우 레벨의 기계가 아닌 하이 레벨의 인간을 배려하기 위한 과정이었던 것이다. 그렇지만 절차적/구조적 프로그래밍까지의 과정은 인간이 기계를 이해하려는 노력에서 크게 벗어나지 못했다. 특히 포인터의 개념은 기계 수준으로 눈높이를 낮추지 않으면 이해하기 매우 힘들다. 그때 “우리가 왜 기계 종속적인 개발을 해야 하지?”라는 생각과 동시에 “우리가 눈으로 보고, 느끼고, 생활하는 현실 세계처럼 프로그래밍을 해보자!”라는 고민 끝에 객체 지향 개념이 탄생했다. 기존의 구조적 프로그래밍 언어에서 가..

👀 라이브러리 살펴보기 build.gradle(사진 좌)를 보면 3가지의 라이브러리를(thymeleaf, web, test) 확인할 수 있다. 하지만 실제 라이브러리를 확인할 수 있는 External Libraries폴더에(사진 우) 들어가 보면려면 많은 라이브러리들이 보인다. 내가 받아오지 않는 라이브러리들도 다수 확인 된다. 이유는 gradle이나 maven같은 build 툴들은 의존관계를 전부 관리해 준다. 예시로 starter-web 라이브러리를 당겨오면 필요한 tomcat, spring web과 같은 필요한 다른 의존관계의 것들을 모두 당겨온다. 요즘은 Web Application을 만들려면 많은 라이브러리가 필요하다. 💡 Gradle, maven 같은 툴들은 의존관계가 있는 라이브러리를 함께 ..

🙋🏻♂️ 생성한 프로젝트 속 폴더의 구성과 역할들을 알아보자 .idea : IntelliJ 에서 사용하는 설정 파일 gradle/wrraper : gradle관련해서 gradle를 사용하는 폴더 src/main/java : 실제 패키지와 소스파일이 담겨있다 . src/main/resources : xml과 html같은 설정 파일이 들어간다. src/test : 테스트 코드들과 관련된 소스들이 들어간다 요즘 개발 트랜드에서 중요하다. 🧱 bulid.gradle 폴더는? 버전을 설정하기, 라이브러리를 내려받는 것. 예전에는 위 사진 속 코드를 하나하나 전부 코딩해야 한다. 현재는 spring.io 홈페이지에서 설정파일까지 제공이 된다 된다. 자세히 보면 프로젝트 생성때 선택했던 2.6.7 버전과 자바 언어..

🔎 다시 보는 main() 메서드 : 메서드 스택 프레임 main() 메서드는 프로그램이 실행되는 시작점이다. main() 메서드가 실행될 때 메모리, 특히 T 메모리에서는 어떤 일이 일어날까? 아래 예제 Start.java가 한 줄씩 실행될 때마다 T 메모리가 어떻게 변화하는지 살펴보자. T 메모리 구조는 그림과 같다. 그림에서는 어떤 요소들이 각 영역을 사용하게 될지 비유적으로 표현했다.(해당 비유를 잘 기억하고 외우자) JRE는 먼저 프로그램 안에 main() 메서드가 있는지 확인. 존재한다면 JRE는 프로그램 실행을 위한 사전 준비, 다시 말 해 가상의 기계인 JVM에 전원을 넣어 부팅. 부팅된 JVM은 목적파일을 받아 그 ‘목적 파일을 실행’. JVM은 가장 먼저 java.lang 패키지를 T메..

🎬 시작 자바는 객체지향 언어이면서 더 근본적으로는 프로그래밍 언어다. 2장에서는 프로그래밍 언어로서의 자바를 살펴보자. 변수가 메모리에 어떻게 저장되고 사용되는지 메서드가 어떻게 호출되고 메모리에 어떤 변화를 일으키는지 또한 객체 지향 프로그래밍과 스프링으로 나아가기 위한 사전 지식을 점검해 보자. ☕️ 자바 프로그램의 개발과 구동 ‘아래 그림’은 자바 프로그램의 개발과 구동과정을 나타낸 것이다. JVM(Java Virtual Machine)의 존재와 역할을 아는 것이 자바 개발 환경을 이해하는 데 필수적이다. JVM은 이름 그대로 가상기계다. 현실 시계에서 컴퓨터를 구동하기 위해 물리적인 컴퓨터인 ‘하드웨어’와 ‘운영체제’, 그리고 그 위에 구동될 ‘소프트웨어’가 필요하고. 거기에 더해 소프트웨어를 ..

🍃 스프링 4.3 이후 단일 생성자의 묵시적 자동 주입 스프링의 주입은 크게 1) 생성자 주입과 2) Setter 주입을 사용한다. Setter 주입 : setXXX()와 같은 메서드 작성(혹은 Lombok으로 생성) 후 @Autowired와 같은 어노테이션을 통하여 스프링으로부터 자신이 필요한 객체를 주입해 주도록 한다. 생성자 주입 : 객체 생성시 의존성 주입이 필요하므로 좀 더 엄격하게 의존성 주입을 체크한다는 장접이 있음. 기존에 스프링에서는 생성자 주입을 하기 위해 생성자 정의 → @Autowired와 같은 어노테이션과 추가해야만 생성자 주입이 이루어 졌지만 스프링 4.3 이후에는 묵시적으로 생성자 주입이 가능해졌다. 👨🏻💻 코드 작성(SampleHotel) / 1번째 방법 예를 들어 Chef..

✍🏻 Lombok 관련, 테스트 관련, 스프링 어노테이션들 🌶 Lombok 관련 어노테이션 @Setter @Data @Log4j 🍃 Spring 관련 어노테이션 @Component @Aurowired 👨🏻💻 테스트 관련 어노테이션 @RunWith @ContextConfiguration @Test 💬 어노테이션 사용 예재(참고 자료) 🌶 Lombok 관련 어노테이션 Lombok은 간단하게 말하면 컴파일시 흔하게 동작하는 기능들을 완성해주는 라이브러리이다. ✍🏻 @Setters 어노테이션 @Setters 어노테이션은 setter 메서드를 만들어 주는 역할. Restaurant 클래스를 자세히 보면 아래와 같이 setter 메서드가 작성된 것을 볼 수 있다. 🔎 Setters의 속성 value 접근 제한 속..

이전글 보기 : 07. 코드로 배우는 스프링 웹 프로젝트 - [스프링의 특징과 의존성 주입] - 스프링이 동작하면서 생기는 일 ✅ 테스트 코드를 통한 확인 ex00 → src/test/java → 폴더에 org.zerock.sample.SampleTest 클래스 작성 SampleTest 클래스는 spring-test 모듈을 이용해서 간단하게 스프링을 가동시켜 위에서 설명한 동작들이 일어나게 한다. 이때 반드시 Junit은 4.10 이상의 버전을 사용해주도록 하자. @Runwith : 현재 테스트 코드가 스프링을 실행하는 역할을 할 것 💁🏻♂️ 결과 🙋🏻♂️ 결과에서 주목해야 하는 부분 new Restaurant()와 같이 Restaurant 클래스에서 객체를 생성한 적이 없음에도 객체가 생성 됐다. ..