spring 11

[Spirng] CORS 처리하는 법

CORS(Cross-Origin Resource Sharing)웹 페이지의 리소스를 다른 도메인에서 요청할 수 없게 제한하기 위한 웹 브라우저에 구현된 보안 기능입니다.악의적인 웹사이트가 허가 없이 다른 사이트와 상호 작용하는 것을 방지할도록 설게되어 사용자 데이터가 허가되지 않은 당사자에게 노출되는 것을 방지할 수 있습니다. 처리방법 1. 글로벌 CORS 구성모든 컨트롤러에 전역적으로 CORS 설정을 적용하려면 구성에서 ' WebMvcConfigurer' 빈을 정의하면 됩니다.import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.spring..

Java/Spring 2024.04.30

[Spring]Jpa를 이용하여 검색기능 사용하기(pageable 사용)

Pageable 인터페이스는 Spring Data JPA에서 페이징과 정렬 정보를 전달하는 표준 방식을 제공합니다. 이를 통해 클라이언트 요청에 기반한 동적 페이징과 정렬 처리가 가능하며, 리포지토리 메소드에 Pageable 객체를 파라미터로 넘겨주면, Spring Data JPA가 이 정보를 바탕으로 SQL 쿼리를 자동으로 생성해줍니다. Pageable 객체에 담긴 페이징과 정렬 조건에 맞게 결과를 Page 형태로 반환합니다. 여기서 Page는 검색된 게시글의 페이지 정보를 포함하고 있어, 개발자는 이를 활용하여 프론트엔드에 필요한 페이징 정보(예: 현재 페이지 번호, 총 페이지 수, 페이지 당 게시글 수 등)를 쉽게 제공할 수 있습니다. 1. 리포지토리 인터페이스 정의 public ..

Java/Spring 2024.04.08

[Spring]@PageableDefault (페이징 처리)

Spring Boot에서 @PageableDefault 애노테이션은 Spring Data의 페이징 처리 기능에서 기본 페이지 크기, 정렬 등을 설정할 때 사용됩니다. 이 애노테이션은 컨트롤러 메소드의 파라미터로 Pageable 객체를 받을 때, 이 Pageable 객체의 기본 값을 지정하는 데 사용됩니다. 예를 들어, 사용자가 페이지 번호나 크기를 명시하지 않았을 경우 기본적으로 사용될 값들을 설정할 수 있습니다. Spring Data의 Pageable 인터페이스를 사용할 때, 컨트롤러 메서드의 파라미터로 Pageable 객체를 직접 받음으로써, Spring MVC가 HTTP 요청의 쿼리 파라미터(page, size, sort 등)에서 페이지네이션과 관련된 정보를 자동으로 추출하고, 해당 정보를 바탕으로..

Java/Spring 2024.04.08

[Spring] @DeleteMapping 사용방법

@DeleteMapping HTML 폼은 기본적으로 'GET'과 'POST' 메소드만 직접 지원합니다. 그렇기 때문에, 'DELETE' 메소드를 사용하기 위해서는 몇 가지 우회 방법을 사용해야 합니다. Thymeleaf와 Spring을 사용할 때, _method 오버라이드를 사용하여 DELETE 요청을 시뮬레이션할 수 있습니다. 이 방법은 HTML 폼에서 POST 메소드를 사용하지만, 요청이 컨트롤러에 도달할 때 DELETE로 해석되도록 합니다. @Controller public class ItemController { @DeleteMapping("/item/{id}") public String deleteItem(@PathVariable("id") Long id) { itemService.delete(..

Java/Spring 2024.04.02

[Spring]Model 객체와 @ModelAttribute

Spring Model 객체 Spring MVC(Model-View-Controller) 아키텍처의 일부로, Controller에서 View로 데이터를 전달하는 데 사용됩니다. Controller에서 처리한 데이터나 비즈니스 로직의 결과를 Model 객체에 추가하면, Spring MVC는 이 Model 객체를 사용하여 View를 렌더링할 때 필요한 데이터를 제공합니다. 예시) html 작성 controller @PostMapping("/board/write") public String boardWrite(String title, String content, Model model) { model.addAttribute("title", title); model.addAttribute("content", co..

Java/Spring 2024.04.02

[Spring]AOP

Spring AOP(Aspect Oriented Programming)는 크로스 커팅 관심사를 분리하여 모듈성을 높이는 프로그래밍 패러다임입니다. 이는 코드를 수정하지 않고 기존 코드에 추가적인 동작을 추가함으로써 이루어집니다. 이는 특히 로깅, 트랜잭션 관리, 보안 등과 같은 기능에서 유용합니다. 크로스 커팅 관심사(Crosscutting Concerns) 분리 여러 클래스나 메소드에 걸쳐 반복적으로 나타나는 코드를 별도의 모듈로 분리하자는 개념을 의미합니다. 예를 들어, 로깅, 보안, 트랜잭션 관리 등의 기능은 여러 클래스와 메소드에서 공통적으로 필요로 하는 기능입니다. 이런 기능들을 각각의 클래스나 메소드에서 구현하게 되면, 코드의 중복이 발생하고 유지보수가 어려워집니다. 이런 문제를 해결하기 위해..

Java/Spring 2024.03.28

[Spring]JdbcTemplate

JdbcTemplate JdbcTemplate은 Spring Framework의 일부로, JDBC 작업을 단순화하고 일반적인 오류를 방지하는 데 도움이 되는 중앙 클래스 JDBC API를 사용하지만 JDBC API의 많은 문제를 제거하는 강력한 메커니즘이며, 트랜잭션 관리 및 리소스 관리 등을 자동으로 해주어 JDBC를 매우 편리하게 사용할 수 있게 도와줌 하지만 동적 쿼리문을 해결하기 어렵다. 사용예시 DB는 h2 사용 application.properties spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa Sp..

Java/Spring 2024.03.28

[Spring] 스프링 빈 등록하는 방법

컴포넌트 스캔 @Component 이있으면 스프링 컨테이너에 자동 등록 @Controller, @Service, @Repository 는 @Component가 포함되어 있어 스프링 컨테이너에 자동으로 등록됨. @Autowired 를 사용하여 스프링과 연관된 객체를 컨테이너에서 찾아서 주입해줌(Dependency Injection : 의존성 주입). 자바 코드로 등록 @Configuration public class SpringConfig { @Bean public TestService testService() { return new TestService(testRepository()); } @Bean public TestRepository testRepository() { return new TestRe..

Java/Spring 2024.03.27