.\mvnw spring-boot:run 메이븐 프로젝트 실행 명령어


./gradlew bootRun 그래들 프로젝트 실행 명령어

'Spring' 카테고리의 다른 글

마이크로서비스에서 DDD 사용하기  (0) 2020.03.05
Spring 날짜 타입 변환  (0) 2019.06.24
Spring 동작원리  (0) 2019.02.27
HTTP Status 404 - /WEB-INF 에러  (0) 2019.02.25
Spring MVC 구성 요소  (0) 2019.02.23


경계된 컨텍스트 : 하나 이상의 경계된 컨텍스트를 포함하는 마이크로서비스를 만들지 말아야 한다.
전체 컨텍스트를 하나의 마이크로서비스에 매핑할 수 있으면 더 좋다, 이는 컨텍스트가 실제로 경계되어 있음을
나타내는 것이다.

유비쿼터스 언어 : 마이크로서비스가 사용하는 언어가 유비쿼터스 언어임을 보장해야 하므로, 노출된 오퍼레이션과
인터페이스는 컨텍스트 도메인 언어로 표현된다.

컨텍스트 모델 : 비록 마이크로서비스가 제공하는 인터페이스에 노출되지 않는 엔티티라 하더라도, 마이크로서비스가
사용하는 모델은 경계된 컨텍스트 내에서 정의되야 하고, 유비쿼터스 언어를 사용해야 한다.
컨텍스트 매핑: 마지막으로 마이크로서비스의 의존성과 결합을 이해하기 위해 전체 시스템의 컨텍스트 매핑을 검토해야한다.

 * 마이크로서비스는 비즈니스 역량을 중심으로 모델링되며, 컨텍스트 매핑에서 보여주는 바와 같이 컨텍스트
도메인은 느슨하게 연결되며, 경계된 컨텍스트로서 단일 책임을 갖게 된다.
경계된 컨텍스트를 구현한 마이크로서비스는 구현을 쉽게 은닉할 수있으며, 자연히 격리되므로 독립적인 배포가 가능하다.


* 실행가능한 jar만들기

build/plugins 태그 아래에 POM을 수정


  true


spring application 설정에서 값 받아오기
@Value(value ="\${service.message.text}" //표현식 사용 "#{'\${service.message.text}' =='advance'}"
사용 $text

SERVICE.MESSAGE.TEXT="HELLO"


json 
직렬화 ‫SimpleObject("hi","kotlin")" 
복잡한 직렬화 ComplexObject(object1 = SimpleObject("more","complex"))
(data class ComplexObject(var object1 : SimpleObject? =null))

null 값 처리 어노테이션
@JsonInclude(Include.NON_NULL)
또는
spring.jackson.default-property-inclusion

'Spring' 카테고리의 다른 글

VS CODE (비쥬얼 스튜디오 코드에서) Spring boot 실행 (RUN)  (0) 2020.04.03
Spring 날짜 타입 변환  (0) 2019.06.24
Spring 동작원리  (0) 2019.02.27
HTTP Status 404 - /WEB-INF 에러  (0) 2019.02.25
Spring MVC 구성 요소  (0) 2019.02.23

 

방법 1 (옛날 방법)

Controller

 

@InitBinder
public void initBinder(WebDataBinder binder) {

SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(df,false));


}

 

 

 

@Data
public class TodoDTO {


private String title;
private Date dueDate;


}

 

@GetMapping("/ex03")

public String ex03(TodoDTO todo) {

log.info("todo: " + todo);



}

 

방법 2 (최근 방법 Spring 에서 지원)

 

@Data
public class TodoDTO {


private String title;

@DateTimeFormat(pattern="yyy/MM/dd")
private Date dueDate;


}


1) 클라이언트가 Request한다

2) servlet-context.xml에 등록 해 놓은 Dispatcher Servlet이 들어 온 요청을 가로 챈다.

3) 그 후 Handller Mapping을 사용하여 클라이언트의 요청을 처리할 컨트롤 객체를 찾는다.

4) handleRequest() 메서드를 호출하여 요청을 처리한다.

5) Controller가 처리한 결과를 ModlerAndView 객체를 리턴한다. 

6) ViewResolver로부터 응답 결과를 생성할 뷰 객체를 구한다.

7) View를 클라이언트에 전송하여 페이지 생성



이해하고 나면 간단하지만, 처음 접하는 내용이라 낯썰어서 이해하기 힘들었다. 

3일정도 과정을 반복하고 설정 코드를 보며 이해하고 구현하여 Controller, DB연동까지 테스트 하였다. 힘들었다..

'Spring' 카테고리의 다른 글

마이크로서비스에서 DDD 사용하기  (0) 2020.03.05
Spring 날짜 타입 변환  (0) 2019.06.24
HTTP Status 404 - /WEB-INF 에러  (0) 2019.02.25
Spring MVC 구성 요소  (0) 2019.02.23
Spring이란 무엇인가?  (0) 2019.02.21

Controller동작 테스트 중 dispatcherservlet에 mapping이 안돼어 자꾸 오류가 발생 하였다.

코드에 이상없고 web.xml, servlet.xml도 잘 햇는데 도무지 원인을 알 수 없어 고심 하던 중..


problems에 waring(!) 하나 떠 있던 걸 아래와 같은 방식으로 해결하고


Build path specifies execution environment JavaSE-1.6. warning. There are no JREs installed in the workspace that are strictly compatible with this environment.


아래와 같이 조치하시면 warning 이 제거됩니다.


* 프로젝트 Properties 메뉴를 클릭한다.

* Java Build Path 를 클릭한 후, Libraries tab 을 클릭한다.

* "JRE System Library" 를 제거한다.

* "Add Library..." 버튼을 클릭한 후, "JRE System Library" 를 선택하고 "Next" 버튼을 클릭한다.



tomcat stop => project -clean => tomcat start

tomcat => clean 

으로 해결하였다.




'Spring' 카테고리의 다른 글

마이크로서비스에서 DDD 사용하기  (0) 2020.03.05
Spring 날짜 타입 변환  (0) 2019.06.24
Spring 동작원리  (0) 2019.02.27
Spring MVC 구성 요소  (0) 2019.02.23
Spring이란 무엇인가?  (0) 2019.02.21




Spring MVC 프로젝트를 만들고 난 후, 기본적인 구성요소들입니다. (board_list.jsp 추가로 만들었음)


각 구성요소들이 어떤 역할을 하는지 알아 보겠습니다.


pom.xml : maven의 빌드 정보를 기술 한다. 무엇으로 구성되어있는지 그 기본형을 서술한다. 다양한 프레임 워크와 라이브러리를 관리하여 준다.


web.xml : 웹프로젝트가 실행될 때 가장 먼저 참조되는 파일, 웹프로젝트의 환경설정 정보를 저장하고 있음.


  DispatcherServlet이 모든 요청을 가로챈다.



root-context.xml : 스프링의 환경설정 파일 ,데이터베이스의 연동정보 설정 ex) mybatis 


servlet-context.xml : 서블릿에 관련된 설정 ex) jsp 의 접두어, 접미어 html, css 리소스 파일 설정 정보 등


    HandlerMapping, HandlerAdapter 객체 생성되고 이어서 viewResolver 객체 생성 


home.jsp : 스크립트 언어 자바언어를 기반으로 사용하여 사용자에게 쉽고 빠르게 사용가능 하게 하여주는 언어이다. 여기서는 가장 기본적인 페이지 뷰로 작동



다음 포스팅 - 전체적인 로직 (흐름도) 




'Spring' 카테고리의 다른 글

마이크로서비스에서 DDD 사용하기  (0) 2020.03.05
Spring 날짜 타입 변환  (0) 2019.06.24
Spring 동작원리  (0) 2019.02.27
HTTP Status 404 - /WEB-INF 에러  (0) 2019.02.25
Spring이란 무엇인가?  (0) 2019.02.21

Spring란 무엇인가?


스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.  


-위키백과 출처


즉 쉽게 이야기하면, 프로젝트의 규모가 커디자 보니, 개발자들의 협업 과정에서 중복되는 부분도 많고, 쉽게 수정 (유지 보수) 하기 위하여 공통 된 것들만 따로 묶어서 사용하기 편리하게 만들어진 오픈소스 프레임 워크 이다.




Spring의 특징은?


  • 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
  • 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
  • 스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
  • 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
  • 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
  • 스프링은 영속성과 관련된 다양한 서비스를 지원한다. iBATIS나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
  • 스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.


-위키백과 출처


특징만 딱 읽었을 때는 당최 무슨 소리인지 모르겠다..


요약하자면,


POJO 방식의 프레임 워크이다 : 여러 라이브러리 들을 지원 하기에 바로 사용이 가능하다.


IoC을 지원한다 : 코딩을 할 경우, 개발자는 여러 객체를 생성하고 소멸한다. ( ex new 연산자), 이러한 객체를 생성하고 소멸 하는 생명주기 관리를 Spring 에서 대신 관리 하여 주기때문에 개발자 입장에서는 굉장히 편하다. 


DI을 지원한다 :  데이터베이스를 연동 하는 데 있어서 jdbc를 사용하거나 mybatis, hibernate 등 라이브러리를 사용 하는 여러 경우가 있는데 바뀌거나 다른 것을 사용 할 떄 마다 쉽게 교체가 가능하다. 


AOP을 지원한다 : 예를들어 클래스가 여러개인 프로그램이 있다. 각 클래스 별로 공통인 코드(부분)이 있는데 이러한 공통된 부분들을 따로 묶어서 필요 할  때마다 쉽게 불러서 사용 할 수 있도록 해 준다.  트랜잭션은 쉽게 불러서 사용 할 수 있도록 하는 예이다.


PSA : 각 환경이 달려져도 잘 작동 할 수 있게 하여준다.


Spring MVC : 모델 컨트롤 뷰로 나누어서 유지 보수를 더 쉽게 할 수 있게 하여준다.


'Spring' 카테고리의 다른 글

마이크로서비스에서 DDD 사용하기  (0) 2020.03.05
Spring 날짜 타입 변환  (0) 2019.06.24
Spring 동작원리  (0) 2019.02.27
HTTP Status 404 - /WEB-INF 에러  (0) 2019.02.25
Spring MVC 구성 요소  (0) 2019.02.23

+ Recent posts