1. @RequiredArgsConstructor와 @AllArgsConstructor 차이점

@RequiredArgsConstructor

초기화 되지 않은 final 필드와 @NonNull 어노테이션이 붙은 필드에 대한 생성자 생성

@AllArgsConstructor

모든 필드에 대한 생성자 생성.

2. @RequiredArgsConstructor

  • 어노테이션을 갖고있으면 자동으로 객체화할 수 있게된다
    => di = 타입만 맞으면 알아서 넣어준다.
  • autowired도 동일한 기능이지만 추천하는 건 requiredArgus 생성자방식
  • 생성자가 있는 빈들은 다 받아올 수 있다.
  • 그렇게 하고 아래 객체에 final을 써줘야 생성자 방식의 객체가 됨
  • requred+final 해주거나 / autowired 해주거나 둘 중 하나
    : 더 찾아보기@ 스프링부트 di 생성자주입 vs autowired

3. @AllArgsConstructor

모든 필드에 대한 생성자 생성.

4. 적용코드: MemberService.java

package com.example.demo.member;

import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

@Service	
@RequiredArgsConstructor
// 어노테이션을 갖고있으면 자동으로 객체화할 수 있게된다 = di = 타입만 맞으면 알아서 넣어준다 = autowired / 추천하는 건 requiredArgus 생성자방식
// 생성자가 있는 빈들은 다 받아올 수 있다. 

public class MemberService {	
	private final MemberRepository memberRepository ;	
// final을 써줘야 생성자 방식의 객체가 됨
// requre+final 해주거나 / autowired 해주거나 둘 중 하나 : 더 찾아보기@ 스프링부트 di 생성자주입 vs autowired
	private final PasswordEncoder passwordEncoder;  
	
	public void create(Member member) {
		member.setPassword(passwordEncoder.encode(member.getPassword()));		
	// 사용자가 입력하는 값은 db에 password 암호화된 형태로 저장되게 됨 -> 관리자가 db를 열어봐도 모르게
		memberRepository.save(member);		
	}

	public Member findByEmail(String email,String password) {
		Member member = memberRepository.findByEmail(email);
		if(passwordEncoder.matches(password, member.getPassword())) // 패스워드가 안맞으면 null
			return member;
		else
			return null;
	}
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN