우선 Spring Project를 켰을 때 hikariCP
와 Mapping
값들이 잘 뜨는지 확인해봐야 한다. 혹시 잘 뜨는데도 error가 난다면 controller와서 enter 몇번 치고 compile을 다시 해버리면 된다.
java에서 타입을 정확히 몰라도 이름만 가지고 접근하여 해당 클래스의 field값과 method를 사용할 수 있게 해주는 API이며 실행시간에 동적으로 특정 클래스의 정보를 추출해낼 수 있는 프로그램 기법이다.
이는 Spring 객체 memory에 올라가있는 영역에서 찾아서 가져오는 방법으로 동작한다.
이는 주로 Spring framework에서 DB단에 root-context.xml
의 BeanFactory
에서 또 hikariCP
가 mybatis
안에 있는 strong 객체를 사용할 때 사용한다.
<Bean>
은 애플리케이션이 실행한 후 런타임에 객체가 호출될 때 동적으로 객체의 인스턴스를 생성하는데
이때 BeanFactory에서 리플렉션을 사용한다.
Entity package의 VO
에서 기본 생성자가 필요한 이유도 동적으로 객체 생성 시 Reflection API를 활용하기 때문이다.
Reflection API로 가져올 수 없는 정보 중 하나가 생성자의 인자 정보이다. 그래서 기본 생성자가 반드시 있어야 객체를 생성할 수 있는 것이다. 기본 생성자로 객체를 생성만 하면 필드 값 등은 Reflection API로 넣어줄 수 있다.
즉, reflection은 프레임워크에서 구체적이지 않은 객체를 받아서 동적으로 해결해준다고 이해할 수 있다.
varStatus
속성을 사용하여 i
객체를 만들어 i
의 field값인 count
를 활용하여 numbering을 처리할 수 있다.int idx
로 치환하여 가져올 수 있다. 또한 보여줘야할 내용을 변수에 담아 scope 영역에 올리는 객체바인딩을 실시하고
만약 return 값이 view name이 method 이름과 같다면 굳이 적어주지 않아도 된다.
만약 parameterType이 한개일 경우에는 안 써줘도 된다고 한다.
하지만 써주는 것이 개발자들 간에 협업에도 훨씬 도움이 된다.
<form>
로 data를 넘길 때 <form>
안에 반드시 1개의 <button type="submit">
이 있는 건 아니다. 이때 만약 버튼 속성을 default로 해 놓을 시 submit으로 들어가기 때문에 반드시 <button type="button">
이라고 명시해 두어야 삭제나 목록 버튼을 누를 때 <form>
이 작동하지 않는다. 원래 이게 있음으로써 객체생성 코드를 안 써도 된다. 그런데 요즘에 Spring Boot와 호환성이 더 좋은 @Injec
를 더 많이 쓴다고 한다.