Spring Boot Devtools
- Devtools
- html 파일 저장 시 서버 재시작없이 view 파일 변경 가능
- 적용
- build.gradle - dependencies 안에 아래 코드 추가
- developmentOnly 'org.springframework.boot:spring-boot-devtools'
- preferences - 컴파일러 - 프로젝트 자동 빌드 체크
- 고급설정 - 컴파일러 - auto-make 허용 체크
- 우측 상단에 구성 편집 - 옵션 수정
- update 작업 시 - 클래스 및 리소스 업데이트
- 프레임 비활성화 시 - 클래스 및 리소스 업데이트
- application.properties 안에 아래 코드 추가
- spring.devtools.restart.enabled=true
- spring.thymeleaf.cache=false
- 크롬 확장자 LiveReload++ 프로그램 설치 후 북마크바에 고정 후 활성화
- build.gradle - dependencies 안에 아래 코드 추가
다국어 처리 (LocaleResolver)
- LocaleResolver
- AcceptHeaderLocaleResolver
- 웹 브라우저가 전송한 헤더의 Accept-Language 값을 기반으로 Locale을 선택한다.
- setLocale() 메서드를 지원하지 않는다.
- SessionLocaleResolver - 많이 사용
- 세션으로부터 Locale 정보를 구한다.
- setLocale() 메서드는 세션에 Locale 정보를 저장한다.
- CookieLocaleResolver
- 쿠키를 이용해서 Locale 정보를 구한다.
- setLocale() 메서드는 쿠키에 Locale 정보를 저장한다.
- FixedLocaleResolver
- 웹 요청에 상관없이 특정한 Locale로 설정한다.
- setLocale() 메서드를 지원하지 않는다.
- AcceptHeaderLocaleResolver
- 다국어 처리 방법 (클릭으로 한/영 전환하기)
- application.properties에 spring.messages.basename=messages 추가
- 언어별로 properties 파일 작성
- messages.properties 생성
- 예시
-
hello=안녕 # name으로 들어온 값이 {0}으로 들어간다. hello.name=안녕, {0}
- messages_en.properties 생성
- 예시
-
hello=Hello # name으로 들어온 값이 {0}으로 들어간다. hello.name=Hello, {0}
- messages.properties 생성
- html에 변수 작성
- 타임리프로 th:text=”#{변수명}” 형식으로 값을준다.
- 여기서 다른 타임리프 문법과는 달리 변수명 앞에는 #이 붙는 다는 점
- 예시
-
<body> <h2 th:text="#{hello}"></h2> <h2 th:text="#{hello.name('Spring')}"></h2> </body>
- html에 경로 작성 및 컨트롤러 메소드 추가
- 예시
- html에 <a href="/changeLocale">전환</a> 추가
- 컨트롤러에 전환 메소드 추가
-
@GetMapping("/changeLocale") public String changeLocale(HttpSession session){ Locale locale = (Locale)session.getAttribute( SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME); if ( Locale.KOREA.equals(locale) ){ session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, Locale.ENGLISH); } else{ session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, Locale.KOREA); } return "redirect:/"; }
- 예시
- Config 클래스 생성
-
@Configuration public class Config { @Bean public LocaleResolver localeResolver() { SessionLocaleResolver localeResolver = new SessionLocaleResolver(); localeResolver.setDefaultLocale(Locale.KOREA); //AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver(); return localeResolver; } }
- 혹시 한글이 잘려나온다면 인텔리제이 설정에서 encoding을 UTF-8로 변경하자
스프링과 스프링부트
- Spring
- Spring Framework는 자바 기반 애플리케이션 개발을 지원하는 오픈소스 애플리케이션 프레임워크로 Spring이라고도 불린다.
- 이전의 EJB(Enterprise Java Bean) 방식의 단점을 해결한 프레임워크
- Spring의 대표적인 특징
- 제어 역전
- 의존성 주입
- AOP 지원 (관점 지향 프로그래밍)
- 웹 개발 지원
- Spring의 문제점
- 설정의 복잡성
- 높은 초기 학습 난이도
- 의존성 관리 문제
- 별도 WAS 서버 구성의 번거로움
- Spring Boot
- Spring의 문제점을 해결해주기 위해 개발된 스프링의 프레임워크
- Spring Boot 사용시 내장형 서버를 사용하여 별도의 웹 애플리케이션 서버를 설치할 필요 없이 웹 애플리케이션을 실행할 수 있다.
- 다양한 스프링 프레임워크 기능과 라이브러리 사용 가능
- Spring Boot의 대표적인 특징
- 간결한 설정
- 내장 서버
- 의존성 관리 간소화
- 운영 편의성
728x90
'교육 (Today I Learned) > Hanaro' 카테고리의 다른 글
[Hanaro] 53일차 / Jar 생성, Bootstrap, H2 DB 연동, Spring Boot (JPA, JPQL, Native SQL) (0) | 2024.04.06 |
---|---|
[Hanaro] 52일차 / Spring Boot 연습문제 풀이 (0) | 2024.03.30 |
[Hanaro] 50일차 / Spring Boot (builder, 어노테이션, Rest API) (0) | 2024.03.30 |
[Hanaro] 49일차 / Spring Boot (Thymeleaf, 데이터 전달 및 Param 값 받기, List로 데이터 저장) (0) | 2024.03.27 |
[Hanaro] 48일차 / Spring Boot (어노테이션, Thymeleaf, Request Mapping) (0) | 2024.03.27 |