Web/📗 Spring11 [Spring 스터디] Spring Message 처리 / 국제화 악덕? 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? 여러 화면에 보이는 상품명, 가격, 수량 등, label 에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경해야 한다. 화면 수가 적으면 문제가 되지 않지만 화면이 수십개 이상이라면 수십개의 파일을 모두 고쳐야 한다.왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다. 이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다.국제화메시지 파일( messages.properties )을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다.- messages_en.properties item=Item item.id=Item.. Web/📗 Spring 2023. 1. 4. Spring '등록' 기능 구현 및 테스트 코드 작성 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 등록 기능 만들기 web > dto > PostsSaveRequestDto package com.izero.springboot.web.dto; import com.izero.springboot.domain.posts.Posts; import lombok.Getter; import lombok.NoArgsConstructor; @Getter @NoArgsConstructor public class PostsSaveRequestDto { private Long id; private String title; private String content; private String author; @Builder public PostsSaveRequestDto(String title, String content, S.. Web/📗 Spring 2022. 7. 18. Entity와 DTO [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] Entity 클래스와 Controller에서 쓸 Dto는 꼭 분리해야 함. Entity Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체 (DB의 테이블과 1:1로 매핑) 데이터베이스와 맞닿은 핵심 클래스. Entity를 기준으로 테이블이 생성되고, 스키마가 변경 됨. @Getter @NoArgsConstructor // 기본 생성자 자동 추가 (public Posts() {}와 같은 효과) @Entity // 테이블과 링크될 클래스임을 나타냄 (SalesManager.java -> sales_manager 테이블) public class Posts { @Id // 해당 테이블의 PK 필드 @GeneratedValue(strat.. Web/📗 Spring 2022. 7. 18. [Spring] 스프링에서 Scheduler 사용하기 스프링에서 scheduler 사용 annotation으로 심플하게 제어 (비딩 사용 방법) xml로 핸들링 스키마 설정 WEB-INT > config > biz-layer.xml이라는 xml에서 작업. xmlns:task라는 스키마를 등록하고 스키마 경로를 지정하기 xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation= http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd" @EnableScheduling and @EnableAsync respectively to replace 출처 : What i.. Web/📗 Spring 2022. 7. 18. Service에서 비지니스 로직을 처리한다? [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] API를 만들기 위해 총 3개의 클래스 필요 Request 데이터를 받을 Dto API 요청을 받을 Controller 트랜잭션, 도메인 기능 간 순서를 보장하는 Service Service에서 비지니스 로직을 처리한다? (X) Web Layer 컨트롤러(@Controller)와 JSP/Freemarker 등 뷰 템플릿 영역 필터(@Filter), 인터셉터, 컨트롤러 어드바이스 등 외부 요청과 응답에 대한 전반적 영역 Service Layer @Service에 사용되는 서비스 영역 일반적으로 Controller와 Dao의 중간 영역에서 사용됨. @Transactional이 사용되어야 하는 영역 Repository Layer Database와 같이 데이터 저장소에 접근하는 영역 (Dao 영역과 유사) Dt.. Web/📗 Spring 2022. 7. 18. 롬복 소개 및 설치하기 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 롬복은 자바 개발 시 자주 사용하는 코드 Getter, Setter, 기본 생성자, toString 등을 어노테이션으로 자동 생성해 줌. 인텔리제이에서 플러그인으로 설치 가능, Ctrl + Shift + A > plugins > lombok 검색 후 설치 (이미 설치 된 경우 체크 누르기) Settings > Annotation Processor > Enable annotation processing 체크 Web/📗 Spring 2022. 7. 8. 테스트 코드 작성하기 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] src > main > java 에서 오른쪽 클릭해서 springboot 패키지 생성 그 아래에 Application 클래스 생성 Application 클래스에 코드 작성 @SpringBootApplication 위치부터 설정을 읽어가는 것 SpringApplication.run()으로 내장 WAS 실행. package com.izero.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; // SpringBootApplication 어노테이션이 있는 위치부터 설정을 읽어가므로, 클래스는 항상 프로젝트의 최상단에 위치하여야 .. Web/📗 Spring 2022. 7. 8. 테스트 코드 소개 (TDD) [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 개요 TDD는 테스트가 주도하는 개발. 테스트 코드를 먼저 작성하는 것부터 시작. 레드 그린 사이클 항상 실패하는 테스트 코드를 먼저 작성하고 (Red) 테스트가 통과하는 프로덕션 코드를 작성하고 (Green) 테스트가 통과하면 프로덕션 코드를 리팩토링 (Refactor) 필요성 빠른 피드백 (톰캣을 재시작하면 1분 이상 소요되지만 테스트 코드 작성하면 바로 볼 수 있다.) 자동 검증 가능 (System.out.println() 사용 불필요) 개발자가 만든 기능 보호 (서비스의 모든 기증을 테스트 할 수 없기에, 이후 수정에서 기존 기능 보호하도록) 테스트 코드 작성 프레임워크 ( == xUnit : 개발환경(x)에 따라 Unit 테스트를 도와준다.) 오마이 옛날 정처기 문제...xUnit...😥 JUn.. Web/📗 Spring 2022. 7. 7. gitignore 설정 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 프로젝트에서 오른쪽 마우스 누르고 ignore File 누르기 화면 나오면 generate 인텔리제이에서 자동으로 생성되는 파일들은 모두 ignore 처리하기 .gradle .idea Web/📗 Spring 2022. 7. 7. 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] build.gradle 변경 최종 코드 buildscript { // buildscript : 그래들(Gradle)에서 buildscript는 보통 별도의 외부 라이브러리를 가져와야 할 때 사용 ext{ // ext: build.gradle에서 사용하는 전역변수를 설정하겠다. springBootVersion = '2.1.7.RELEASE' } repositories { // repositories는 각종 의존성 (라이브러리) 들을 어떤 원격 저장소에서 받을 지 정함. 책에서는 jcenter도 사용하나, 현 시점 (22.07.07) 에 중지 되어, mavenCentral만 사용 가능 mavenCentral() jcenter() } dependencies { // spring-boot-grad.. Web/📗 Spring 2022. 7. 7. build.gradle dependencies의 compile과 testCompile이 작동하지 않는 문제 [Spring / 트러블 슈팅] 🎈 문제 정의 build.gradle에서 책에서 쓰라는 대로 따라가면 사진과 같이 아예 인식을 못한다. 🔑 원인 추론 jdk 버전 문제라고 생각 (X) compile 에서 implementation 과 api 로 변경되었다고 함. (O) compile과 implementation 차이 compile은 연결된 API 모두가 프로젝트에 의해 노출이 되고 implementation은 노출되지 않는다. api가 노출이 되면, API로직에서 유효성 검사 및 기타 원하지 않는 형태의 데이터가 들어와 보안의 위협이 돼서 골치 아파진다. A Web/📗 Spring 2022. 7. 7. 이전 1 다음