목록Spring (59)
개발일기
package hello.proxy.app.v1;import org.springframework.web.bind.annotation.*;@RestControllerpublic interface OrderControllerV1 { @GetMapping("/v1/request") String request(@RequestParam(value="itemId") String itemId); @GetMapping("/v1/no-log") String noLog();} spring 2점대에서는 @RequestMapping, @ResponseBody 두 개의 어노테이션으로 인식 할 수 있었는데 3.x 버전 부터는 @RestController 또는 @Controller 어노테이션을 사용해야한다.
FAILURE: Build failed with an exception. * What went wrong:'void org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact.(org.gradle.api.provider.Provider)' * Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org. CONFIGURE FAILED in 4s 내 그래들 버전을 살펴보니..
proxy:main: Could not resolve org.springframework.boot:spring-boot-starter-web.Required by: project :Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html group = 'hello'version = '0.0.1-SNAPSHOT'sourceCompatibility = '11' 🔥 3버전 이상 부터는 Java 버전이 17이상이어야 함. 그래서 build.gradle에서 sourceCompat..
root cause: exception opening port h2 console server (http://localhost:8082) (port may be in use), cause: timeout; please check your network configuration, specially the file /etc/hosts 해당 에러가 발생하였다. 평소에도 localhost:127.0.0.1이 제대로 동작하지 않는거 같아 의문이 들었는데 드디어 찾았다. 어떤 이유인지 모르지만 #127.0.0.1 localhost203.132.166.14 localhost255.255.255.255 broadcasthost::1 localhostloocalhost가 주석처리되어 있었고 203...
편리한 폼 관리를 위한 속성 th:object(기능 강화, 폼 커맨드 객체 선택)th:field, th:errors, th:errorclass폼 컴포넌트 기능 checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원스프링의 멕시지, 국제화 기능의 편리한 통합스프링의 변환 서비스 통합(ConversionService) 입력 폼 처리 th:object: 커맨드 객체를 지정한다.*{...} 선택 변수 식이라고 한다. th:object에서 선택한 객체에 접근한다.th:fieldHTML 태그의 id, name, value 속성을 자동으로 처리해준다. 렌더링 전 렌더링 후 등록 폼th:object를 적용하려면 먼저 해당 오브젝트 정보를 넘겨주어야 한다. 하지만 등록 폼이기..
타임리프 특징 - 서버 사이드 HTML 렌더링(SSR)- 네츄럴 템플릿- 스프릿 통합 지원 서버사이드 렌더링이란?서버쪽에서 화면을 렌더링하여 보여주는 방식을 말한다.타임리프는 백엔드 서버에서 HTML을 동적으로 랜더링하는 용도로 사용된다. 네츄럴 템플릿 타임리프는 순수 HTML을 최대한 유지하는 특징이 있다.타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치며 동적으로 변경된 결과를 확인할 수 있음. 스프링 통합 지원타임 리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다. 타임리프 사용선언 기본 표현식 간단한 표현:변수 표현식 : ${...} 선택 변수 ..

HTTP 요청 메시지 - 단순 텍스트 Http message body에 데이터를 직접 담아서 요청 해당 방식으로는 JSON, XML, TEXT 주로 JSON형식을 사용한다. POST, PUT , PATCH, DELETE package hello.springmvc.basic.request; import jakarta.servlet.ServletInputStream; import jakarta.servlet.ServletRequest; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframew..
스프링 부트 로깅 라이브러리 스프링 부트 로깅 라이브러리를 사용하기 위해서build.gradle 에다가 dependencies에 spring-boot-starter-logging을 포함해야 사용할 수 있다. 새롭게 알게 된 지식은 Logback, Log4J, Log4J2 등등 수 많은 라이브러리들이 있는데, 그것을 통합해준 것이 sl4j라이브러리이다. 인터페이스는 sl4j이고, 구현체는 Logback과 같은 로그 라이브러리를 선택하면 된다. private final Logger log = Loggerfactory.getLogger(getClass()); @Slf4j : 롬복 사용 가능 추가적으로 좀 더 알게 된 사실은 log.info()로 호출하는 것과 System.out.println()사용하면 차이점..