본문 바로가기
728x90
반응형

Spring20

[SpringMVC] @Value로 Static 변수에 값 주입할 수 있을까? Spring에서 @Value 어노테이션은 application.properties와 같이 프로퍼티에 정의된 값을 주입하는데 사용된다.@Value 어노테이션 사용 방법.propertiesapp.name=MyApplicationapp.version=1.0.0  .java@Componentpublic class AppConfig {    @Value("${app.name:default}")    private String appName;    @Value("${app.version:0}")    private String appVersion;}보통 이렇게 @Value 형식에 맞춰 properties 값을 주입하여 주면 간단히 사용할 수 있지만 한 가지 주의할 점이 있다.@Value로 값을 주입할 변수가 sta.. 2024. 12. 10.
[SpringFramework] Filter로 XSS 취약점 대응하기 Servlet Filter를 등록하여 서버로의 HTTP 요청(request)에 대한 XSS 필터링 적용  XSS란?교차 사이트 스크립팅(XSS, Cross-Site Scripting)은 웹 애플리케이션 보안 취약점 중 하나로, 공격자가 악성 스크립트를 다른 사용자의 브라우저에서 실행하도록 만드는 공격 기법이다. 주로 웹 페이지에서 사용자 입력을 제대로 검증하지 않거나 필터링하지 않을 때 발생한다.XSS 공격은 사용자의 세션 쿠키, 개인 정보, 인증서 등을 탈취하거나, 악성 사이트로 리디렉션하거나, 피싱 공격을 수행할 수 있다.  그럼 XSS 공격을 막기 위해 어떻게 해야 할까? XSS는 주요 정보(session, cookie, 개인정보) 탈취, 사용자 리다이렉션, 사이트 조작 등 다양한 공격 방법이 있지.. 2024. 7. 4.
[SpringBoot] Redirect처리 과정 (feat. ClassCastException) SpringMVC를 사용하여 웹 API개발 중 세션이 없는 요청에 대해 로그인 페이지로 Redirect 시키는 서비스 로직을 작성하였는데 화면 이동등에 대한 요청은 문제없이 Redirect 처리 되었지만 데이터 조회와 같은 Api요청에서는 에러가 발생하였다. 우선 원인은 Redirect처리 시 발생한 ClassCastException 때문인데, Spring의 Redirect의 처리 과정에 대해 자세히 알아보자. Spring에서 Redirection은 클라이언트에게 새로운 URL로 이동하라고 알려주는 프로세스를 의미한다. 리다이렉션은 주로 사용자를 다른 페이지로 이동시키거나, 요청을 다른 컨트롤러 또는 URL로 보내는 데 사용된다. Redirect Processing Logic (Debugging) 1. .. 2023. 10. 23.
[JPA] QueryDSL이란? QueryDSL은 JPA를 사용하여 데이터베이스 쿼리를 작성하고 실행하기 위한 유용한 도구이다. QueryDSL을 사용하면 Java 코드로 쿼리를 작성할 수 있어서, 컴파일 타임 오류확인 및 IDE의 자동완성 기능을 사용할 수 있다. QueryDSL?: JPA Entity와 관련된 쿼리를 생성하기 위한 builder 라이브러리이다. SQL을 직접 작성하는 대신, Java 코드를 사용하여 query를 작성할 수 있다. Entity와 Q타입: Entity의 메타 모델을 사용하여 query를 작성하기 때문에 Entity클래스에 대응하는 Q타입 클래스가 필요하다. ex) Customer -> QCustomer 문법: QueryDSL은 Java코드로 작성되며, MethodChaining을 사용하여 query를 작.. 2023. 9. 26.
[SpringDataElasticsearch] Spring Data Elasticsearch란? Elasticsearch용 Spring Data는 저장소별 기능을 유지하면서 새로운 데이터 저장소에 익숙하고 일관된 Spring 기반 프로그래밍 모델을 제공하는 것을 목표로 하는 Spring Data 프로젝트의 일부이다. Spring Data 프로젝트 중 가장 많이 사용되고 있는 JPA (Spring Data JPA) 와 비슷하게 사용할 수 있기 때문에 보다 익숙하고 쉽게 Elasicsearch에 접근할 수 있게 도와준다. Spring Data Elasticsearch 프로젝트는 Elasticsearch 검색 엔진과의 통합을 제공하며, 주요 기능 영역은 Elasticsearch 문서와 상호 작용하고 Repository Style Data Access 계층을 쉽게 작성하기 위한 POJO 중심 모델이다. P.. 2023. 9. 25.
[Lombok] Lombok이란? 💡 Lombok? Lombok은 Java 라이브러리로 개발을 하면서 기계적으로 작성하게 되는 Getter, Setter, ToString 등의 메서드 작성 코드를 Annotation으로 대신해 코드 다이어트를 도와준다. 장점 어노테이션 기반의 코드 자동 생성을 통한 생산성 증가 코드 다이어트를 통한 코드 가독성 및 유지보수성 증가 기존 코드 public class Car { private String seqNumber; private String id; private String name; public Car() {} public Car(String seqNumber, String id, String name) { this.seqNumber = seqNumber; this.id = id; this.nam.. 2023. 9. 10.
[MyBatis] 기본 세팅 및 사용 방법 1. pom.xml 작성 pom.xml에 2개의 dependency를 등록한다. 로컬에 MariaDB로 DB를 구성했기때문에 MariaDB JDBC를 등록했다. JDBC는 Java로 DB에 접근 및 제어를 가능하게 해주는 API다. mybatis는 JDBC를 좀 더 편하게 사용할 수 있도록해주는 라이브러리인데 JDBC의 결과 및 설정 매핑을 대신해주고, 결정적으로 mybatis를 사용하면 Java 코드가 간결해진다. org.mariadb.jdbc mariadb-java-client org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1 2. DB접속정보 작성 application.yml에 DB접속 정보와 mapper의 경로를 지정해준다. 해당 경로에 있는 .. 2023. 9. 10.
[SpringMVC] 주요 @Annotation들 💡 Annotation 이란? Annotation(@)은 사전적 의미로는 주석이지만 자바에서는 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다. 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 합니다. 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter나 setter를 생성하기도 합니다. Annotation을 통하여 코드량이 감소하고 유지보수하기 쉬우며, 생산성이 증가됩니다. 💡 Spring의 주요 Annotation리스트! @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으로 만들려할 때 사용 되는 Annotation이다. @Configuration public class Application.. 2023. 8. 19.
[SpringMVC] WebListener를 활용한 중복 로그인 방지 Listener : 특정 이벤트가 발생하기를 기다리다 이벤트 발생 시 실행되는 컴포넌트.  WebListener@Weblistener는 ServletListener를 정의하는데 사용된다. ServletListener란? 웹 애플리케이션의 특정 이벤트(시작 세션 생성/소멸 등)를 감지하고 이에 반응하는 컴포넌트이다.클래스를 Listener로 등록하게 되면 서버가 종료될 때 까지 백그라운드 상태에서 동작하는 데몬(deamon)이 되기 때문에 간단한 값을 공유할 수 있다.추가로 ServletContextListener인터페이스를 상속받으면 서버가 실행/종료 될 때 특정 동작을 수행할 수 있다. 사용 예시:import javax.servlet.ServletContextEvent;import javax.servl.. 2023. 8. 19.
728x90
반응형