본문 바로가기

Java

(41)
[Spring] @RestController의 파라미터(@PathVariable, @RequestBody) - @RestController는 기존 @Controller에서 사용하던 일반적인 타입이나 사용자가 정의한 타입(클래스)을 사용한다. - 여기에 추가로 몇 가지 어노테이션을 이용하는 경우가 있다. ∙@PathVariable : 일반 컨트롤러에서도 사용이 가능하지만 REST 방식에서 자주 사용된다. URL 경로의 일부를 파라미터로 사용할 떄 이용 ∙@RequestBody : JSON 데이터를 원하는 타입의 객체로 변환해야 하는 경우에 주로 사용 @PathVariable - REST 방식에서는 URL 내에 최대한 많은 정보를 담으려고 노력한다. - 예전에는 '?' 뒤에 추가되는 쿼리 스트링(query string)이라는 형태로 파라미터를 이용해서 전달되던 데이터들이 REST 방식에서의 경로의 일부로 차용되는..
[Java] JVM(Java Virtual Machine) - JVM은 'Java Virtual Machine'을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 기계'라고 할 수 있다. - 영어권에서는 컴퓨터를 머신(machine)이라고도 부르기 때문에 '머신'이라는 용어대신 '컴퓨터'를 사용해서 '자바를 실행하기 위한 가상 컴퓨터'라고 할 수 있다. - Virtual Machine(가상 기계)는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어이며, 컴퓨터의 성능이 향상됨에 따라 점점 더 많은 하드웨어들이 소프트웨어화되어 컴퓨터 속으로 들어오고 있는데, 마찬가지로 '가상 컴퓨터(virtual computer)'는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터이다. - 자바로 작성된 애플리케이션은 모두 이 가상 ..
[SpringBoot] Starter로 의존성 관리하기 - maven project에서는 pom.xml 파일을 통해 프로젝트에 필요한 의존성을 관리할 수 있지만, 예를 들어 프로젝트에 스프링과 JPA를 연동해서 데이터베이스 작업을 처리한다고 가정하면 hibernate-entitymanager.jar 파일을 다운로드하여 클래스 패스에 추가해야 한다. 그러기 위해서는 pom.xml 파일에 하이버네이트 관련된 설정을 가장 먼저 추가해야 한다. - 하지만 문제는 프로젝트에 하이버네이트 관련 의존성만 추가했다고 해서 스프링과 JPA연동을 바로 처리할 수 없다는 것이다. 즉, 스프링과 JPA를 연동하기 위해서는 하이버네이트 말고도 spring-orm.jar나 spring-data-jpa.jar 같은 다른 라이버러리들이 추가적으로 필요하다. 그런데 어떤 라이브러리가 더 ..
[Spring] 스프링 MVC의 기본 구조 - 스프링은 하나의 기능을 위해서만 만들어진 프레임워크가 아니라 '코어'라고 할 수 있는 프레임워크에 여러 서브 프로젝트를 결합해서 다양한 상황에 대처할 수 있도록 개발되었다. - 서브 프로젝트라는 의미를 개발자의 입장에서 가장 쉽게 이해할 수 있는 방법은 '별도의 설정이 존재할 수 있다'라는 개념이다. - Spring Legacy Project로 생성한 예제의 경우에도 servlet-context.xml과 root-context.xml로 설정 파일이 분리된 것을 볼 수 있다. - 스프링 MVC가 서브 프로젝트 이므로 구성 방식이나 설정 역시 조금 다르다. 스프링 MVC 프로젝트의 내부 구조 - 스프링 MVC 프로젝트를 구성해서 사용한다는 의미는 내부적으로 root-context.xml로 사용하는 일반 ..
[Java] 람다식(Lambda Expressions) 람다식이란? - 람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. - 객체 지향 프로그래밍에 익숙한 개발자들은 혼란스러울 수 있지만, 자바에서 람다식을 수용한 이유는 자바 코드가 매우 간결해지고, Collection의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문이다. - 람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성한다. 람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체 예를 들어 Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 다음과 같다. 위 코드에서 익명 구현 객체를 람다식으로 표현하면 다음과 같다. - 람다식은 "(매개..
[SpringBoot] JPA(Java Persistence) 개념 정리 ORM이란? - ORM이란 용어에도 나와있듯이 객체(Object)와 관계(Relation)을 연결(Mapping)해 주는 개념이다. - 객체와 테이블 시스템(RDBMSs)을 변형 및 연결해주는 작업이라 말 할 수 있다. - ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 대처할 수 있도록 해준다. - ORM을 객체 지향 프로그래밍 관점에서 생각해보면, 관계형 데이터베이스에 제약을 최대한 받지 않으면서, 객체를 클래스로 표현하는 것과 같이 관계형 데이터베이스를 객체처럼 쉽게 표현 또는 사용하자는 것이다. [ORM] ORM이란? ORM을 이용하기 위해서는 Object modeling과 Relational modeling, 두 Modeling의 차이점을 이해해야... blog.naver.com -..
[SpringBoot] Springboot의 자동설정 스프링 MVC를 이용하여 웹 애플리케이션을 개발한다면 간단한 웹 애플리케이션이라도 기본적으로 여러 가지 설정이 필요하지만 스프링부트에서는 자동설정 기능이 동작하면서 수많은 bean들이 자동으로 등록되고 동작한다. - 메인 클래스 위에 선언된 @SpringBootApplication 어노테이션 하나만으로 복잡한 설정들을 대신할 수 있다. - @SpringBootApplication은 다양한 어노테이션을 포함하고 있는데, 중요한 한 어노테이션은 @SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration 3개다. @SpringBootConfiguration -환경설정 bean 클래스를 표현하기 위해 사용했던 @Configuration과 동일하다 @C..
[SpringBoot] SpringBoot의 구조와 실행 구조 src/main/java : 일반적인 자바소스를 등록한다. src/main/resources : 자바 소스가 아닌 XML이나 Property File을 등록한다. src/test/java : JUnit 기반의 Test 케이스를 작성한다. static : HTML 같은 정적인 웹 리소스가 저장된다. templates : 템플릿 기반의 웹 리소스가 저장된다. application.properties : 프로젝트 전체에서 사용할 properties 정보들을 저장한다. - 프로젝트의 pom.xml을 살펴보면 'spring-boot-starter-XXX' 형태의 의존관계 2개가 추가 되어있다. - starter-web은 초기 생성시 starter에서 선택을 하였기 때문에 추가되었고, starter-test는..
[SpringBoot] Spring Framework와 Spring Boot 장점 정리 Framework - 사전적 의미는 '뼈대' 혹은 '구조'이다. - 소프트웨어 관점에서 해석하면, 프레임워크는 애플리케이션의 아키텍처에 해당하는 골격 코드라고 할 수 있다. - 애플리케이션을 개발할 때 가장 중요한 것이 애플리케이션 전체 구조를 결정하는 아키텍처이다. - 아키텍처에 해당하는 코드를 직접 개발하는 것이 아니라 프레임워크로부터 빌려 쓰면, 개발자는 아키텍처와 결합할 비즈니스 로직 개발에만 집중할 수 있게 된다. JAVA 기반의 오픈 소스 프레임워크 처리 영역 프레임워크 설명 Presentation 스트러츠 MVC(Model View Controller) 아키텍처를 제공하는 프레임워크이다. 스프링 (MVC) 스트러츠 같은 MVC 아키텍처를 제공하지만 스트러츠처럼 독립적으로 존재하지 않고 스프링..
[Eclipse] Spring Properties Editor가 보이지 않을 때 https://stackoverflow.com/questions/48272031/missing-spring-properties-yaml-editor-and-and-spring-properties-editor-with-spri/48278375 Missing Spring Properties Yaml Editor and and Spring Properties Editor with Spring Tools 3.9.2 I had installed an earlier version of Spring Tools into an existing Eclipse Oxygen installation and I was able to select and use the Spring Properties Yaml Editor and S..