스프링의 트랜잭션 처리
·
Java/Spring
이미 현업에서 자주 사용하지만 따로 정리하지는 않아서 이번 기회에 공식 레퍼런스를 보며 내용을 정리해보았다.스프링 트랜잭션 처리스프링 공식 문서: 트랜잭션 관리@Transactional 애노테이션은 인터페이스, 클래스, 또는 메서드에 트랜잭션의 의미를 부여하는 메타데이터이다. 예를 들어, "이 메서드가 호출될 때 새로운 읽기 전용 트랜잭션을 시작하고, 기존 트랜잭션은 일시 중지한다"는 의미를 가진다. @Transactional의 기본 설정은 다음과 같다:전파(Propagation): PROPAGATION_REQUIRED격리 수준(Isolation Level): ISOLATION_DEFAULT읽기-쓰기(Read-Write) 모드: 트랜잭션은 기본적으로 읽기-쓰기 모드이다.타임아웃(Timeout): 트랜잭션..
Spring 에서 런타임 환경에서 프로퍼티 값을 변경하는 방법
·
Java/Spring
Spring Boot 및 일반 Spring 환경에서 외부 서비스 기반 설정 관리 방법어플리케이션을 구동할 때 필요한 설정값들은 보통 환경변수(Environment Variables)나 파일에 저장하여 관리합니다. 하지만 최근에는 설정값을 Zookeeper, AWS Secrets Manager와 같은 외부 서비스에서 불러오거나, 보안을 강화하기 위해 메모리 내에서만 설정값을 저장하는 방식이 점점 더 선호되고 있습니다. 이러한 요구사항을 충족시키기 위해 Spring Boot와 일반 Spring 환경에서 설정값을 효과적으로 관리하는 방법을 소개합니다.Spring Boot에서 환경 설정값 관리하기Spring Boot는 EnvironmentPostProcessor를 활용하여 어플리케이션 시작 시점에 환경 설정값을..
스프링 프로파일 (Spring profile) 을 통해 환경별로 다른 설정을 해보자
·
Java/Spring
Spring Profiles를 통한 환경별 설정Spring에서는 spring.profiles.active라는 프로퍼티를 이용해 현재 활성화된 프로파일(환경)을 지정할 수 있습니다. 이를 활용하면 개발(development), 운영(production), 로컬(local) 등 다양한 환경마다 다른 설정파일을 로드하거나 다양한 빈 설정을 적용할 수 있습니다.주의사항Maven Profile과는 별개의 개념이므로 혼동하지 않도록 주의하세요. Maven Profile은 빌드 시점에 적용되는 것이며, Spring Profile은 런타임 시점에 활성화되는 설정입니다.Maven Profile 설정은 관련 문서를 참고하세요.프로파일 설정 방법다음은 spring.profiles.active 값을 설정하는 여러 가지 방법입..
Spring 내에서 리소스 불러오기
·
Java/Spring
스프링 프레임워크에서 ResourceLoader를 활용한 파일 접근스프링(Spring) 프레임워크를 사용하다 보면 webapps 폴더 내의 파일들에 접근해야 하는 경우가 종종 발생합니다. 예를 들어, 설정 파일이나 정적 자원에 접근해야 할 때가 그렇습니다. 전통적으로는 ServletContext를 이용하여 파일에 접근할 수 있지만, 이 방법은 ServletContext에 의존적이라는 단점이 있습니다. 특히 특정 동작만을 위한 모듈을 추가하거나 테스트 환경에서 유연하게 사용하기 어렵습니다.스프링에서는 이러한 문제를 해결하기 위해 ResourceLoader를 제공하여 보다 유연하게 파일에 접근할 수 있도록 지원합니다. 이번 포스트에서는 ResourceLoader를 활용한 파일 접근 방법을 살펴보고, 실용적인..
스프링 Properties 파일을 이용해서 설정하기
·
Java/Spring
프로젝트를 진행하다보면 파일안에 Properties 파일들을 저장해놓고 사용하는 일들이 자주 생긴다. 가장 간단하게 사용하는 방법은 XML 혹은 JSON을 특정 경로에 넣고 파싱하는 방법이 있으나 설정파일을 사용하는 곳이 많아질 경우 복잡하다. 스프링 프레임워크는 프레임워크 단에서 Properties 를 설정하는 방법을 가지고 있다. Spring 설정 xml 안에 아래와 같은 설정을 추가한다. 그럼 자동으로 WEB-INF 경로 아래에 있는 *.properties 밸류들이 로드된다. 스프링 내에서 사용하기 위해선 아래와 같이 사용한다.@Component class MyClass { @Value("${my.property.name}") private String[] myValues; } 만약 위의 설정 방법..
Mybatis + Myabtis Spring 사용시 마이바티스 설정파일 사용법
·
Java/Spring
MyBatis를 Spring과 함께 사용할 경우, 기본 설정만으로도 대부분의 상황에 충분히 대응할 수 있습니다. 별도의 세부 설정이 필요한 경우를 제외하고는 디폴트 설정을 활용하는 편이 일반적입니다. Spring에서는 MyBatis 설정을 자동으로 처리해주는 부분이 많기 때문에, SqlSessionFactoryBean에 mapper 위치 정도만 지정한 뒤 사용하는 경우가 잦습니다. 예를 들어, Spring의 기본 설정 파일을 아래와 같이 작성한 뒤, 매퍼 파일들을 resources/mapper 혹은 resources/mybatis와 같은 디렉토리에 배치할 수 있습니다. 여기서는 mapper 폴더 아래에 mybatis-config.xml을 두는 예시를 들어보겠습니다. 예시 설정 (mapper-config...
Tomcat 으로 원격 배포와 서버 원격디버깅
·
Java/Spring
이클립스 기준 톰캣 7.x 버전으로 설정 CENTOS 기준 $CATALINA_HOME/catalina.bat 파일 안에 CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n" * 중요 카탈리나 아래명령어와 함께 재실행catalina.sh jpda start 안에 위에것을 추가해주고 톰캣을 재시작해준다. * 8000은 자기 포트번호에 맞게 변경한다. * 당연한 이야기지만 서버측에서도 포트번호 8000번을 열어주어야한다. 보안이 강화된 환경에서 라우터 또는 방화벽에서 포트번..
Resource Handling in Spring MVC
·
Java/Spring
Spring MVC에서 정적 자원(css, js, etc)을 처리해본 경험ResourceHttpRequestHandlerURL 패턴에 따라 정적 자원 요청을 처리HTTP 캐시 설정 기능 제공설정 간소화 기능 제공:Java 기반 설정시 WebMvcConfigureGradle을 이용해서 build 자동화 프로젝트 구조backend - src - main --java -- resource - testfrontend - package.json- bower.json- groundfile.js- src-- assets-- helpers--layouts--libs-- pages Backend 관리 Sprinb boot, Spring I/O Platform, 공용 컴포넌트Thymeleafhtml태그 /속성 기반의 템플..