[TIL] 2021.03.09


Spring Bootタスク2コメント


Cooper塔斯克2评论进展


Logger Logger入力、推奨
	logger.debug("question : ", {});
Optionalでgetを直接使用しないでください.
	Optional<Question> question = questionRepository.findById(id).get() (X)   

    	Optional<Question> question = questionRepository.findById(id).get() (X)
    	model.addAttribute("question", question.get());  
JPAは、変更の検出を自動的にチェックするので、変更を個別にチェックする必要はありません.汚い検査(dirty checking)(李東旭のブログ)
	user.update(updateUser);
        userRepository.save(user);
依存性注入推奨ジェネレータによる注入
1. コンストラクション関数注入の使用によるメリット
1. null을 주입하지 않는 경우, NullPointerException을 발생시키지 않는다.
2.의존관계를 주입하지 않은 경우에 컴파일 시 오류를 잡아낼 수 있다.
3. 순환 참조 방지
  • 依存関係が注入されていない場合、エラーのコード(純javaコード)
  • を見つけることができる.
        public class Contorller {
            private final Service service; //final을 쓸 수 있는 장점
    
            public Controller(Service service) {
                this.service = service;
            }
    
            public void callService() {
                service.doSomething();
            }
        }
    public class Main {
        public static void main(String[] args) {
        	Controller controller1 = new Controller(new ServiceImpl());
            Controller controller2 = new Controller(
            	() -> System.out.println("Lambda implementation is doing something")
            );
    
            controller1.callService(); //의존 관계 등록 안될 경우, compile 에러
            controller2.callService(); //의존 관계 등록 안될 경우, compile 에러
        }
    }
  • 修正者(setter)注入の欠点:任意の実装体はサービスインタフェースを実装するだけでよい.
  • NullPointerExceptionを生成できます.
  • を注入することなく、任意の数のオブジェクトを作成できます.
  • public class Controller {
    	private Service service;
       
        public void setService(Service service) { //해당 서비스가 주입이 필요한 객체가 아니라면? 그래도 구동은 된다.
        	this.service = service;
        }
       
        public void callService() {
        	service.doSomething();
        }
    }