Spring Reflection API

강정우·2022년 9월 26일
0

spring

목록 보기
7/25
post-thumbnail

우선 Spring Project를 켰을 때 hikariCPMapping 값들이 잘 뜨는지 확인해봐야 한다. 혹시 잘 뜨는데도 error가 난다면 controller와서 enter 몇번 치고 compile을 다시 해버리면 된다.

Reflection

java에서 타입을 정확히 몰라도 이름만 가지고 접근하여 해당 클래스의 field값과 method를 사용할 수 있게 해주는 API이며 실행시간에 동적으로 특정 클래스의 정보를 추출해낼 수 있는 프로그램 기법이다.
이는 Spring 객체 memory에 올라가있는 영역에서 찾아서 가져오는 방법으로 동작한다.
이는 주로 Spring framework에서 DB단에 root-context.xmlBeanFactory에서 또 hikariCPmybatis안에 있는 strong 객체를 사용할 때 사용한다.
<Bean>은 애플리케이션이 실행한 후 런타임에 객체가 호출될 때 동적으로 객체의 인스턴스를 생성하는데
이때 BeanFactory에서 리플렉션을 사용한다.

Entity package의 VO에서 기본 생성자가 필요한 이유도 동적으로 객체 생성 시 Reflection API를 활용하기 때문이다.
Reflection API로 가져올 수 없는 정보 중 하나가 생성자의 인자 정보이다. 그래서 기본 생성자가 반드시 있어야 객체를 생성할 수 있는 것이다. 기본 생성자로 객체를 생성만 하면 필드 값 등은 Reflection API로 넣어줄 수 있다.

즉, reflection은 프레임워크에서 구체적이지 않은 객체를 받아서 동적으로 해결해준다고 이해할 수 있다.

EL식 for문의 varStatus(count) 속성

  • 게시판을 만들 때 index 번호가 아닌 화면에 뿌려주는 번호가 보여야 하기에 EL식 안에 있는 varStatus 속성을 사용하여 i객체를 만들어 i의 field값인 count를 활용하여 numbering을 처리할 수 있다.

POJO의 매개변수와 return "view name"

  • 기존에 우리는 무지성으로 Board 객체를 가져와 mapper interface의 method를 만들었다. 하지만 이는 비효율적이다. 왜? data를 넘겨 받을 때 단 한개만 받는데 이를 굳이 class를 받아올 필요는 없기 때문이다.
    그래서 저 매개변수 부분을 int idx 로 치환하여 가져올 수 있다.

또한 보여줘야할 내용을 변수에 담아 scope 영역에 올리는 객체바인딩을 실시하고
만약 return 값이 view name이 method 이름과 같다면 굳이 적어주지 않아도 된다.

Mapper.xml에서 parameterType이 1개일 때

만약 parameterType이 한개일 경우에는 안 써줘도 된다고 한다.
하지만 써주는 것이 개발자들 간에 협업에도 훨씬 도움이 된다.

Button 속성

  • <form> 로 data를 넘길 때 <form> 안에 반드시 1개의 <button type="submit"> 이 있는 건 아니다. 이때 만약 버튼 속성을 default로 해 놓을 시 submit으로 들어가기 때문에 반드시 <button type="button"> 이라고 명시해 두어야 삭제나 목록 버튼을 누를 때 <form> 이 작동하지 않는다.

@Inject

원래 이게 있음으로써 객체생성 코드를 안 써도 된다. 그런데 요즘에 Spring Boot와 호환성이 더 좋은 @Injec를 더 많이 쓴다고 한다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글