개발자의 공부방/스프링 27

스프링] 쿠키의 Same Site를 알아보자

Same Site란? 크롬 정책에서 비롯한 쿠키 정책이며 SameSite라는 속성의 기본 값을 None에서 Lax로 변경한 것이다. 이는 CSRF 및 의도하지 않은 정보 유출에 대한 취약성에 대처하기 위함이다. SameSite 속성 총 3가지의 종류가 있다. Strict, Lax, None Strict 👉 SameSite간의 요청에서만 쿠키의 전송을 허용하며 가장 완벽한하지만 편의성이 떨어진다. Lax 👉 기본적으로는 Strict지만 Cross Site 요청에서도 “Safe”한 요청인 Http GET, a태그, link태그를 통한 접근은 허용한다. None 👉 Same Site 요청은 물론 Cross Site의 요청에도 모두 전송을 허용한다. 그렇기때문에 보안에 취약하다. None을 사용하려면 반드시 H..

Servlet] Intellij console log가 안나올 때 해결법 feat.SpringBoot

요즘 다시 백엔드 공부를 하고 있습니다... 정말 많이 돌아왔네요... 자 아무튼 김영한님의 스프링 강의를 보면서 하다가 System.out.print를 했는데 안나오시는 경우가 생겼습니다. 원인 ServletApplication의 @ServletComponentScan 어노테이션이 없어서 그렇습니다. @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } } 해결 SpringBoot를 이용하는데 Boot에서 Servlet을 이용하려면 @@ServletComponentScan 어노테이션..

스프링 기초] IoC 제어의 역전과 프레임워크 그리고 라이브러리.

IoC(Inversion of Control) 제어의 역전을 의미하는데 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다. 즉, 쉽게 이야기하면 내가 무언가를 호출해서 직접 실행하는 것이 아닌 프레임워크 같은 것이 대신 호출을 해주는 것이다. 그렇기 때문에 이름 자체가 제어의 역전이다. 말 그대로 제어하는 것이 역전되 버렸다! 위에 언급한 것 중 프레임워크가 있는데 이 IoC의 개념의 관점에서 설명하기 아주 좋은 예이다. 프레임워크와 라이브러리의 차이? 제어의 역전(IoC) 라는 개념의 관점에서 보면 프레임워크는 내가 작성한 코드를 제어하고, 대신 실행시켜주는 것이고 라이브러리는 내가 작성한 코드가 직접 제어의 흐름을 담당하는 것을 말한다. 즉, 제어의..

스프링 기초] 스프링과 스프링부트의 차이점.

구글에 스프링과 스프링부트의 차이점을 검색하면 정말 많은 학도들의 글이 나옵니다. 현업에서 개발할 때 스프링을 쓰기는 했으나 과연 제가 스프링의 개념과 목적을 얼마나 알고 쓰는지에 대해서 고민했습니다. 이때 좋은 강의를 보고 나름대로 하나하나 천천히 정리해보려고 합니다. 스프링과 스프링부트의 차이점은 무엇인가? 여러 소스를 들어서 예를 꺼내면 다소 글이 길어지겠지만 먼저 간단한 개념을 잡고 출발하겠습니다. 스프링 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타.. 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술, 기술 통합, 테스트, 언어 스프링부트 스프링을 편리하게 사용할 수 있도록 지원해주는 껍데기(?) 단독으로 실행할 수 있는 애플리케이션을 쉽게 생성. Tomcat 같..

스프링] 에러 : java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed; 해결법 feat. 스프링부트

현재 제목과 같은 에러가 발생했다. UPDATE 문을 실행하면 저렇게 에러가 나는데... 구글에 검색을 하면 스프링프레임워크를 세팅할 때 read-only 어쩌고... 이러한 해결법이 나오는데.. 결과적으로 대부분이 스프링 xml 셋팅을 얘기하고 있다. (application-context.xml...) 스프링부트 + mybatis + mysql + gradle 로 환경셋팅이 되어 있는 나는 전혀 xml 설정이 없다... 무튼 해결방법은... transactional 을 통한 에러였고 readOnly 라는 것을 보았기에... 어노테이션 @Transactional 을 선언하고 readOnly = false 를 해줬다. 다행히 위와 같은 에러는 더 이상 발생되지는 않았다!

스프링부트] 목록 리스트

Controller @RequestMapping(value = "/admin/company/companyRegistration", method = RequestMethod.GET) public String companyList(Model model) { log.debug("a1 :"+companyService.getCompanySelectNameList(companyVO)); model.addAttribute("companySelectNameList", companyService.getCompanySelectNameList(companyVO)); return "/admin/company/companyRegistrationList"; } 안나왔던 이유 String companyList 메소드에 url 경로..