[Spring] SEO 적용하기
·
Spring
SEO 란 Search Engine Optimization 의 약자로 검색엔진 최적화하는 방법입니다. Spring 은 SSR(Server Side Rendering) 방식이기 때문에 간단한 설정으로 SEO 가 가능합니다. 우선 index 페이지에 meta 태그들을 추가해야 합니다.위와 같이 robots follow 를 설정해주고, 알맞은 URL 과 사이트 설명을 작성합니다. 이후 프로젝트 최상위에 robots.txt 파일을 추가합니다.User-agent: *Allow: /위와 같이 설정하면 robot 이 자동으로 수집하여 검색 우선순위를 높여줍니다. 좀 더 자세한 리포트를 보고 싶다면 Naver 의 Search Advisor 를 이용하면 될 것 같습니다.
[Spring] GET 방식 특수문자 처리하기(The valid characters are defined in RFC 7230 and RFC 3986)
·
Spring
GET 방식으로 URL 요청 시, 특수문자를 포함하면 "The valid characters are defined in RFC 7230 and RFC 3986"과 같은 오류가 발생하기도 합니다. 해당 이슈는 특정 버전 이상의 Tomcat을 사용하면 문제 발생하지 않지만 낮은 버전의 Tomcat에서는 종종 발생합니다. 해결 방법은 server.xml relaxedQueryChars 속성을 추가하는 방법입니다.1. Tomcat 에 추가(server.xml) 위와 같이 relaxedQueryChars 속성을 이용해 특수문자를 처리할 수 있습니다. 2. application.yml 파일에 추가server: tomcat: relaxed-query-chars: '[,],{,},(,),^,|,"' rel..
[Spring] @Value null 확인사항
·
Spring
application.yml 파일에 설정값을 입력하고 @Value 를 통해 데이터를 가져오는 방식에서, 값을 제대로 설정하였음에도 Null 값을 불러오는 경우가 종종 있습니다. 그럴 땐 @Value 를 작성한 Service 를 new 로 호출하지 않았는지 확인할 필요가 있습니다. 기본적으로 Spring 은 DI 컨테이너가 @Autowired 나 @RequiredArgsConstructor 를 통해 인스턴스를 싱글톤으로 유지합니다. Spring 이 실행될 때, @Value 값이 맵핑된 상태로 인스턴스가 유지가 되던중 new 를 만나게 되면 새로운 인스턴스를 생성해 @Value 값이 맵핑된 변수는 Null 이 됩니다. # application.ymlspring: file: profile-path: f..
[SpringBoot] Mybatis Batch Update
·
Spring
Spring + Mybatis 사용 시, @Mapper를 사용해 Auto Commit을 한다면 1 row를 insert 할 때, 1번의 Transaction 이 발생하게 됩니다. 이는 DB의 과도한 Transaction을 발생시켜 문제를 야기하기도 합니다. 이를 해결하기 위해 1,000건씩 잘라 Update 하는 방법에 대해 간략히 알아보겠습니다. 1. SqlSessionFactory 주입@Autowiredprivate SqlSessionFactory sqlSessionFactory; 2. ExcutorType 작성SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); 3. 1000건씩 Batch Updateint cursor..
[Spring] Tomcat docBase 설정
·
Spring
Tomcat 으로 웹 서버 구동 시, Controller 를 통하지 않고 resource 에 바로 접근 하는 방법이 있습니다. Tomcat 의 docBase 설정입니다. 설정 방법은 아래와 같습니다. 1. Tomcat 설치경로이동 -> server.xml  -> Context 태그 추가 위 처럼 /image 로 URL 을 접근했다면 자동으로 /nas/image 경로의 파일 불러오는 설정입니다. 인터셉터 설정이 되어 있다면 해당 경로는 exclude 설정이 필요합니다. 2. 인터셉터 exclude 설정public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry reg..
[SpringBoot] application.yml 멀티 프로필 설정
·
Spring
SpringBoot 에서 application.yml 파일을 이용하여 멀티 프로필 설정 하는법을 작성하였습니다.server: port: 1234 servlet: encoding: charset: UTF-8mybatis: config-location: classpath:config/mybatis-config.xml mapper-locations: classpath:mapper/*.xml---spring: config: activate: on-profile: "local" datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://localhost:3306/test?useUnicode..
[SpringBoot] properties 파일 static 변수 맵핑하기
·
Spring
. properties 파일로부터 값을 받아와 static 변수에 맵핑하는 방법을 작성하였습니다.1. 프로퍼티 작성우선 constants.properties 라는 파일을 classpath 아래에 생성합니다.resources/propreties/constants.propertiesbase.user.id:999901base.user.name:기본유저2. 소스작성Constants.java 파일을 생성합니다.import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component;@Comp..
[Spring] 다중 프로젝트 추가(settings.gradle)
·
Spring
1개의 Root 프로젝트 아래에 다수의 프로젝트를 추가하고자 할땐, setting.gradle 파일에 해당 프로젝트들은 include 하면 됩니다.rootProject.name = 'main-api'include 'sub-api-1'include 'sub-api-2'include 'sub-api-common'
[SpringBoot] CORS Filter 생성
·
Spring
Front End와 Back End으로 나눠 인프라를 구성할 때, CORS를 종종 만나게 됩니다. CORS는 Cross-Origin Resource Sharing Policy의 약자로 브라우저에서 다른 출처의 리소스를 공유하는 정책입니다. 서로 다른 도메인에서 API를 호출할 때 발생하는 에러로 이를 해결하기 위해 CORS를 설정해주어야 합니다. CORS 는 OPTIONS 요청을 통해서 서버가 적절한 Access-Control를 가졌는지 확인하고 적절하지 않다면 CORS 에러를 발생시킵니다. 해당 에러를 해결하는 방법에 대해 작성하였습니다.1. Filter 사용@Configuration@Order(Ordered.HIGHEST_PRECEDENCE)public class CorsFilter implement..
[SpringBoot] Session 관리하기
·
Spring
Spring Boot에서 세션 관리를 효율적으로 구현하기 위해 Enum을 활용하는 방법을 살펴보겠습니다. 특히, Enum을 사용하여 세션의 key를 체계적으로 나열하고 관리하는 것이 핵심입니다. 이 접근 방식은 세션 관리의 일관성을 유지하고, 코드의 가독성과 유지보수성을 크게 향상시킵니다. 각 세션 키를 Enum에 정의함으로써, 세션 데이터를 저장하고 조회할 때 발생할 수 있는 실수를 줄일 수 있습니다. 이번 포스팅에서는 이 방법을 간단하고 명확하게 설명하겠습니다. 1. SessionKeys 생성@RequiredArgsConstructorpublic enum SessionKeys { // key 를 나열 USER_VO("사용자 정보", UserVO.class), ROOM_VO("채팅방 정보", Ro..
제로빈
'Spring' 카테고리의 글 목록 (4 Page)