본문 바로가기

분류 전체보기58

[spring boot] static resource Cache-Control 설정 프로젝트 기능 구현을 마치고 성능 개선을 위해 정적 자원에 대한 캐시 설정을 하기로 했다. 정적 자원이란 클라이언트가 요청했을 때 거의 변경되지 않는 자원으로 이미지 파일, html, javascript와 같은 파일이 있다. 이러한 정적 자원을 서버 로딩시마다 클라이언트에서 매번 호출할 경우 DB 요청이 증가해 응답 시간과 자원이 증가하는데 캐시를 적용시킴으로써 리소스 호출에 대한 응답 시간을 줄일 수 있다. 개발자 도구를 통해 각 자원의 Response Headers 보면 Cache-Control의 상태를 확인할 수 있다. Cache-Control- no-store: 캐시 사용을 하지 않는다.- no-cache: 서버에 바뀐 내용이 있으면 새로 가져오고 없으면 그대로 사용한다.- max-age: 캐시 .. 2023. 6. 5.
[spring boot] @Autowired를 통한 필드 주입, 생성자 주입 프로젝트에서 기능 구현을 위해 여러 클래스에서 @Autowired를 통해 필드주입을 사용했고 이러한 의존성 주입 코드를 다시 검토 과정에서 다음과 같은 의문점이 생겼다. Spring boot에서 필드 주입을 사용하면 위와 같이 @Autowired에 밑줄이 가있는데 마우스를 올려보면 "Field injection is not recommended"라는 말과 함께 필드 주입은 추천하지 않는다고 알려준다. 왜 스프링 부트에서는 필드 주입을 추천하지 않는 것일까? 우선 이 해답을 얻기 위해 의존성 주입이란 무엇이고 의존성 주입 방법에 대해 알아야 했다. Spring Di, IoC와 의존성 주입의 개념 스프링 DI(Dependency Injection), IoC(Inversion of control) 스프링을 공.. 2023. 5. 30.
[spring boot] Ajax을 활용한 비동기 서버 통신 Ajax란? JavaScript를 사용한 비동기 서버 통신으로 서버로 모든 데이터를 보내는 것이 아닌 필요한 데이터만 보내 응답받을 수 있다. 이 때문에 페이지 전체의 새로고침 없이 일부분만 로드가 가능하다. 비동기 서버 통신이란 데이터 요청 후 결과를 응답받기 전까지 기다리는 것이 아닌 동시에 다른 작업을 함께 처리하기 때문에 시간과 자원을 아낄 수 있다. 즉 요청 후 응답이 올 때까지 대기하는 동기 방식과 대조된다. Ajax를 통해 클라이언트와 서버 간에 xml이나 json 형식으로 데이터를 주고받을 수 있는데 프로젝트에서는 json을 사용하여 데이터를 전송했다. 스프링 부트에서 json을 이용해 통신하기 위해서는 Controller 클래스에 @RestController를 사용하거나 Mapping 메.. 2023. 5. 29.
MyBatis resultMap을 활용한 inner join - json 출력 MyBatis에서는 join을 하기 위해 resultMap을 사용한다. // buy_bid 테이블 resultMap 설정 // item 테이블 resultMap 설정 두 테이블을 join 하기 위한 select 문을 작성하기 전 resultMap을 활용하여 간단한 설정을 해야 한다. 위 코드를 보면 두 가지 resultMap을 작성했는데 각각 join할 두 테이블에 대한 설정이다. type에는 각 테이블에 대한 Dto Class 명을 입력하고 id에는 Dto를 식별할 명칭을 입력한다. result에는 join을 통해 반환할 값들로 Dto의 필드값을 입력한다. property에는 Dto의 실제 필드명을 입력하고 column에는 join 후 출력할 때의 컬럼명을 입력하면 된다. 간단하게 작성할 수 있지만 헷.. 2023. 5. 21.
MySql - SQLIntegrityConstraintViolationException 에러 테이블에 값을 insert 하기 위해 테스트 하던 중 아래와 같은 에러가 발생했다. Console창에 나타난 에러의 원인은 외래키의 제약조건 때문에 값을 추가하거나 업데이트할 수 없다는 것으로 에러 원인과 함께 원인이 되는 테이블, 외래키, 기본키의 컬럼명을 알 수 있었다. SQLIntegrityConstraintViolationException은 데이터베이스가 무결성 제약조건에 위배되었을 때 발생하는 에러이다. 무결성이란 데이터에 결함이 없는 상태를 뜻하며 데이터베이스의 상태를 일관되게 유지하기 위해 무결성 제약조건을 지켜야 한다. 무결성 제약조건에는 여러 가지 사항이 있지만 에러 원인과 코드를 통해 참조 무결성이 위배되었다는 것을 알 수 있었다. 참조 무결성 위배는 외래키가 기본키와 상관없는 값을 가.. 2023. 5. 14.
git 초기 공동 작업 설정 방법(clone ~ merge) 깃 팀 프로젝트 적용 1. main 프로젝트 clone 하기 main 프로젝트 파일을 저장할 폴더에 가서 git bash로 clone 명령문을 작성한다. 명령문: git clone 레파지토리 주소 clone 후 git bash 결과 clone 후 폴더로 돌아가면 프로젝트 파일이 생긴다. 2. 깃 로컬 브런치 생성하기 깃 공동 작업을 위해 각자 로컬 브런치와 원격 브런치를 생성해야 한다. 명령문: git checkout -b "브런치명" 입력하면 로컬 브런치 생성과 함께 main 브런치에서 내가 생성한 브런치로 이동한다. 3. 깃헙 원격 브런치 생성하기 로컬 브런치를 생성하고 나면 깃헙의 원격 브런치(깃헙에서 파일이 저장될 곳)와 연동하기 위해 원격 브런치를 생성한다. 나의 현재 브런치(main)가 나타나.. 2023. 4. 28.