반응형
목록
Spring (68)
[꼼꼼한 개발자] 꼼코더
🔋 프로그램이 메모리를 사용하는 방식 자바의 특징을 빠르게 살펴봤다. 이제부터는 자바를 잘 활용하기 위한 지식을 쌓아보자. 아래 그림은 하나의 프로그램이 실행될 때 프로그램이 메모리를 사용하는 방식을 간략하게 보여준다. 기계어를 포함한 모든 프로그래밍 언어의 공통된 사용 방식이다. 객체 지향 프로그램에서는 데이터 저장 영역을 다시 세 개의 영역으로 분할해서 사용한다(아래 그림 참고). 그림의 우측 영역(데이터 저장영역)은 T처럼 보이기에 앞으로 T메모리 구조라고 간략하게 지칭하겠다. 🏴☠️ 자바에서 존재하는 절차적/구조적 프로그램의 유산 객체지향 프로그래밍은 절차적/구조적 프로그램의 어깨를 딛고 있다. ‘절차적 프로그래밍’을 한마디로 표현하자면 ‘goto를 쓰지 말라는 것’이다. ❓왜 goto를 사용하..
🎬 시작 자바는 객체지향 언어이면서 더 근본적으로는 프로그래밍 언어다. 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 클래스에서 객체를 생성한 적이 없음에도 객체가 생성 됐다. ..
🍃 스프링이 동작하면서 생기는 일 작성한 2개의 클래스와 ‘root-context.xml’이 어떻게 동작하는지 이해하기 위해서는(이전 글 참고) 스프링과 함께 시간의 순서대로 고민해 보아야 한다. 스프링이 동작한다는 가정하에 안에서 어떤 일들이 벌어지는지 그림으로 정리하면 다음과 같이 표현할 수 있다. 🎨 그림 이야기 설명 🎅🏻 ApplicationContext : "엣헴 나는 객체들을 관리해주는 컨텍스트지, 나는 root-context.xml라는 설정 파일 기준으로 할일을 정하지!" (코드 실행) 🎅🏻 ApplicationContext : "어디보자~(root-context.xml을 읽으며) 으흠 내가 관리할 객체는 요 두 놈인가?(Restarurant, Chef)" (@setter, @date 등 확..
💉 의존성 주입 테스트 작성된 프로젝트를 이용해서 간단하게 의존성에 대한 기능을 작성하고 테스트해보자. 예제의 내용은 레스토랑(Restaurant) 객체를 만들고 레스토랑에서 일하는 셰프(Chef) 객체를 주입하는 예재를 작성하려고 한다. 스프링에서는 ‘생성자를 이용한 주입’과 ‘setter 메서드를 이용한 주입’으로 의존성 주입을 구현한다. 구현시 설정방법 은 주로 XML이나 어노테이션을 이용해서 처리한다. 예제는 'Lombok' 라이브러리를 이용하여 setter 메서드를 자동으로 구현하고 spring-test 라이브러리인 'Log4j'를 이용하여 스프링의 동작을 테스트 한다. 따라서 pom.xml에서 Lombok 라이브러리와 Log4j 라이브러리를 추가후 진행 해보자. 👨🏻💻 실습 준비 (라이브러리..
🖐 스프링의 주요 특징 5가지 POJO 기반의 구성 의존성 주입(DI)을 통한 객체 간의 관계 구성 AOP(Aspect-Oriented-Programming) 지원 편리한 MVC 구조 WAS의 종속적이지 않은 개발 환경 👨🏻💻POJO (Plain Old Java Object) 기반의 구성 스프링은 성격 자체가 가벼운 ‘경량 프레임워크’ 이지만, 내부에서는 객체 간의 관계를 구성할 수 있는 특징을 가지고 있다. 스프링은 다른 프레임워크들과 달리 이 관계를 구성할 때 별도의 API 등을 사용하지 않는 POJO(Plain Old Java Object)의 구성 만으로 가능하도록 제작되어 있다. 쉽게 말해서 ‘우리가 일반적인 Java 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용’할 수 있다는 ..