목록Spring (17)
hrming
■ @Component 어노테이션 기반 등록Spring이 자동으로 Bean을 감지하고 등록할 수 있도록 @Component 및 관련 어노테이션을 사용함 - @Component 사용- @Service, @Repository, @Controller 사용구분용도@Service서비스 계층 클래스에 사용@RepositoryDAO(데이터 엑세스) 계층 클래스에 사용@ControllerSpring MVC 컨트롤러에 사용 import org.springframework.stereotype.Component;@Component // 자동으로 Spring Bean으로 등록됨public class MyComponent { public void hello() { System.out.println("Hell..
XSS Filter 설정이 되어있고, XSS Filter를 타는 것 까지 확인을 했는데 값이 null로 넘어오고 있었다.확인해보니, MultipartFilter가 설정되어 있었고 이게 XSS Filter보다 우선순위가 높아서 발생한 문제였다. [원인]- MuiltipartFilter는 필터 체인에서 우선순위가 높음- MultipartFilter는 요청을 MultipartHttpServletRequest로 변환하는 역할을 함- 변환 후에는 요청 본문(request.getInputStream())을 이미 읽은 상태가 되므로, 이후 필터에서 요청 본문에 접근하면 비어있거나 정상적으로 처리되지 않을 수 있음- XSS 필터는 요청 데이터를 원본 그대로 처리해야 하나, MultipartFilter가 먼저 실행되면 ..
▪️ XSS(Cross Site Scripting): 서버로 보내는 폼이나 데이터 안에 스트링 형태의 자바스크립트를 보내, 개발자가 의도한 코드와는 다르게 코드가 동작하여 ‘사용자의 데이터를 가져가거나 악성 코드를 심는 행위’▪️ XSS Filter - XSS Filter 적용하는 방법은 첫번째 블로그 내용 참고- 동작 흐름1. 클라이언트가 를 포함한 입력을 서버로 전송2. Spring Filter에서 요청값을 가로채어 XSS 필터링을 적용 : -> <script>로 변환3. 변환된 요청값이 컨트롤러로 전달 : 변환 후, 프로그램 로직에서 가 실행되지 않도록 보장- Spring Filter: 디스패처 서블릿에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 ..
- public 함수가 아닌 private 함수에 적용한 경우 ( 메소드가 public 접근일 경우에만 트랜잭션이 적용 )- 상위 함수에 @Transactional 어노테이션이 추가되어 있지 않은 경우, 작성한 코드를 보니까...🤣1. 상위 메서드에 @Transaction을 선언 & 하위 메서드① 생성 - 적용 ⭕2. 하위 메서드① 에 추가로 하위 메서드② 를 생성 - 적용 ❌https://maivve.tistory.com/337 [Spring] 예상 Q&A 공부(Transactional 트랜잭션 적용 범위)안녕하세요. CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다. 틈틈히 게시글을 작성하며 면..
Entity- Entity 클래스는 실제 DB의 Relation과 1:1로 매핑되는 클래스- DB Relation 내에 존재하는 attribute만 속성(필드)로 가져야 하는 것이 특징- 가급적 외부에서는 Entity 클래스의 필드에 직접적으로 접근하지 않도록 하고, getter/setter 보다는 용도에 맞는 구체적인 메서드를 정의하여 값을 사용하도록 권장됨- Request / Response 시, Entity 클래스를 직접 사용하는 것은 권장하지 않음 DTO- DTO(Data Transfer Object)는 데이터 전송 객체의 준말- 계층 간 데이터 교환을 위해 사용하고, 별도의 로직 없이 getter / setter 만 존재함- 주로 비동기 처리를 위해 사용 VO- VO(Value Object)는 ..
Spring Tag Library: Spring Framework에서 제공하는 태그 라이브러리로, Spring의 다양한 기능을 JSP에서 쉽게 사용할 수 있도록 지원. ■ 주요 기능- 폼 처리 (spring-form): form:form, form:input, form:errors등 폼 관련 태그를 제공- 메시지 출력(spring-messages): 다국어 지원을 위한 메시지 출력을 쉽게할 수 있는 태그(spring:message)를 제공- URL생성( (spring-url) : URL을 동적으로 생성하는 태그(spring:url)를 제공 ■ 장점- Spring MVC와 통합되어 있어 Spring의 기능을 JSP에서 쉽게 사용할 수 있음.- 코드의 재사용성과 유지보수성을 높여줌 스프링 태그 라이브러리..
@Value 어노테이션 사용 이유: 외부에 노출해서는 안되는 값들을 사용할 때, application.properties와 같은 파일에 보안이 필요한 값들을 넣어두고 .gitignore로 등록하여 외부에 노출되지 않도록 한다.: 이와 같이, application.properties 파일등에 입력된 값을 코드로 가져와서 사용하기 위해 @Value 어노테이션을 사용. 사용 방법 및 주의사항@Value ( "$ { } " ) @Value 어노테이션은 스프링 빈으로 등록을 하고 의존 관계를 주입할 때 동작함. → 해당 객체를 스프링 빈으로 등록해야 함. 참고 및 출처 :https://velog.io/@shawnhansh/SpringBoot-Value-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9..
Spring Security로 로그인한 유저 정보를 가져올 수 있는 방법은 3가지 정도가 있는 것 같다. (하단 출처 참고) 나는 아래와 같이, 전역에 선언된 SecurityContextHolder를 이용해서 로그인 유저 정보를 가져왔다. 😎 Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); UserDetails userDetails = (UserDetails)principal; String username = principal.getUsername(); String password = principal.getPassword(); @GetMapping("/write") public String ..