본문 바로가기

spring

(62)
DI 스프링 빈 등록 시 메서드 찾는 순서스프링에서 메서드를 빈으로 등록할 때는, 먼저 메서드의 반환 타입으로 빈을 찾는다.만약 해당 타입의 빈이 여러 개 존재할 경우, 이름으로 빈을 찾는다.예를 들어, 같은 타입의 빈이 두 개 이상 정의되어 있는 상황에서 빈을 주입하려고 하면, 주입 시 @Qualifier를 사용해(우선순위를 높게 지정 ) 특정 이름의 빈을 명시적으로 지정할 수 있다.JPA와 @RepositoryJPA를 사용할 때는 @Repository 어노테이션을 명시적으로 사용하지 않아도 된다.JPA 리포지토리는 JpaRepository 인터페이스를 상속받는 인터페이스로 정의되는데, 이 경우 스프링이 자동으로 해당 리포지토리를 빈으로 등록하고 예외 처리를 포함한 기본적인 기능을 제공한다.예를 들어, Us..
사용하는 용어 정리 1. Principal (주체)정의:인증이 성공적으로 수행된 후, 애플리케이션에서 작업을 수행할 수 있는 사용자 계정 정보를 뜻한다.사용자의 ID, 이메일, 사용자 객체 등이 포함될 수 있다.사용:SecurityContext 또는 Authentication 객체를 통해 접근 가능.Authentication authentication = SecurityContextHolder.getContext().getAuthentication();Object principal = authentication.getPrincipal();  2. Authentication (인증)정의:사용자가 애플리케이션에 접근하기 전에 본인임을 증명하는 절차.구성 요소:Principal: 사용자의 계정 정보.Credentials: 사용자..
2024-07-30 1. @RequestMapping과 @GetMapping의 차이점@RequestMapping:기본 HTTP 요청 방식(GET, POST, PUT, DELETE 등)을 처리할 수 있는 포괄적인 어노테이션이다.사용 예시: @RequestMapping("/example")모든 HTTP 메서드를 처리할 수 있다. method 속성을 통해 GET, POST 등 다른 HTTP 요청 방식을 명시적으로 지정할 수 있다.@RequestMapping(value = "/example", method = RequestMethod.GET)public String example() { return "example";}@GetMapping:@RequestMapping의 특화된 버전으로, HTTP GET 요청만 처리한다.@Ge..
2024-07-30 @RequestMapping과 @GetMapping의 차이점@RequestMapping: @RequestMapping은 Spring MVC에서 요청을 처리하는 메서드를 매핑하는 데 사용된다. 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)와 URL 패턴을 지원하며, 하나의 어노테이션으로 복잡한 요청 매핑이 가능하다.@GetMapping: @GetMapping은 @RequestMapping의 특정 버전으로, HTTP GET 요청을 처리하는 메서드를 매핑하는 데 사용된다. @RequestMapping(method = RequestMethod.GET)과 동일한 역할을 한다. GET 요청에 특화된 간결한 방법이다.@Controller와 @RestController의 차이점@Controlle..
@Service, @Restcontroller를 붙여주는 이유는? @Service와 @RestController를 사용하는 이유는 각각의 역할을 명확히 하기 위해서이다. 각 어노테이션이 붙는 클래스는 특정 기능을 수행하도록 지정되어 있으며, Spring 프레임워크에서 이를 관리하는 방식에 차이가 있다.1. @Service목적: @Service는 비즈니스 로직을 수행하는 서비스 클래스를 정의할 때 사용된다.기능: 이 어노테이션이 붙은 클래스는 Spring 컨테이너에 의해 빈(Bean)으로 관리된다. 이는 싱글톤 패턴으로 동작하며, 클래스 내의 모든 메서드에 트랜잭션을 적용할 수 있다. 예를 들어, @Transactional을 사용하면 해당 클래스의 메서드가 트랜잭션 범위 내에서 실행되도록 보장한다.동작 원리: @Service 클래스는 스프링이 자동으로 프록시 객체를 만들..
2024-07-18 일의 솔로 프로젝트 중간 점검 설계 질문 질문 엔티티질문ID Long질문 클래스 질문 (일대일)멤버클래스 멤버 (다대일) > 질문(다) : 멤버 (일)질문등록 날짜 > Auditble(추상 클래스) 로 보냄 수정 날짜 > Auditble(추상 클래스) 로 보냄    질문 제목 String @NotBlank질문 내용 (DB에서는 TEXT) @NotBlank좋아요 > 리스트 (리스트 사이즈로 좋아요수)조회수  > 리스트(리스트로 조회수)공개여부 Enum PUBLIC - 공개글 상태 SECRET - 비밀글 상태질문 상태 (초기 상태 값은 QUESTION_REGISTERED) > ENUM QUESTION_REGISTERED- 질문 등록 상태 QUESTION_ANSWERED - 답변 완료 상태QUESTION_DELETED - 질문 삭제 상태QUES..
까먹으면 안되는 것 - 추가 1. 질문들 리스트 조회 기능구현 항목질문들 리스트 DTO:질문의 기본 정보(예: 질문 ID, 제목, 작성자, 공개 여부)를 포함한 DTO를 생성.이 DTO는 목록 조회 시 클라이언트로 전달될 데이터 구조.public class QuestionListDto { private Long questionId; private String title; private String createdBy; private String visibility; // PUBLIC or SECRET}매퍼:Question 엔티티를 QuestionListDto로 변환하는 매퍼 구현.List → List로 변환하는 메서드 필요.@Componentpublic class QuestionMapper { public ..
URI 메서드 어떻게 쓰는데 @PostMapping public ResponseEntity postQuestion(@Valid @RequestBody QuestionPostDTO questionPostDTO){ Question question = questionService.createQuestion(mapper.questionPostDTOToQuestion(questionPostDTO));// question.setAnswer(new Answer()); URI location = UriCreator.createUri(QUESTION_DEFAULT_URL, question.getQuestionId()); return ResponseEntity.crea..