2023. 6. 19. 20:10ㆍTIL(Today I Learned)
(1) Maven
- xml 파일을 하나 만들어서 maven 설정 파일을 만들어서 연결해주었더니 해당 경로에 lib 파일들이 들어오게 된 것임.
target : 결과물이 담기는 폴더
pom.xml : 프로젝트에 관련된 구조가 담겨있는 xml
(2) base-package
- base-package에 해당하는 경로에 클래스를 만들고 해당 클래스에 @Component로 달아줘야 스프링이 그것을 bean으로 등록해줌.
- 만약에 base-package의 경로를 바꿔버리면 beans에 값이 제대로 담기지 않는다.
(3) 스프링 컨테이너에 객체를 등록하는 방법(bean 등록 방법)
- xml 파일에 작성
1. bean 태그를 이용한 등록
- <bean id = "MemberController" class="bean으로 등록할 클래스명">
- bean으로 등록하는 것은 객체를 만드는 것과 마찬가지다.
- bean을 그냥 객체 그대로 만들어 담을 수도 있고, x라는 변수에 담아서 만들 수도 있다.
- 이런 식으로 어떤 객체의 이름을 지정해주는 것이 가능하다.
- 이름 설정하는 방법은 <bean id="bean이름" class="bean으로 등록할 클래스명"></bean>
이렇게 등록할 수 있다.
2. 어노테이션을 이용한 등록
- @Component를 해당 클래스에 작성
- 해당 클래스를 스캔 하도록 설정 //component-scan으로 패키지 경로 지정
<context:component-scan base-package="com.kh.app" />
- bean 객체에서 Controller가 자동으로 담기는데 이름도 자동으로 CamelCase로 만들어준다.
- 이를 바꾸려면 @Controller(value = "바꾸고 싶은 이름")으로 붙여주면 된다.
- 경우에 따라서 어노테이션을 사용할 수 없을 때가 있다.(ex) sqlSessionTemplate -> 라이브러리의 클래스 파일에 가서 어노테이션을 달아줄 수 없기 때문이다. 그런 경우에는 1번 방법을 사용해야 한다.
***** 중요한 점 ******
- 컨테이너는 2개(servlet-context.xml, root-context.xml)가 있다.
- 만약 bean 등록을 할 때, servlet container에 등록하고 싶을 때에는 servlet-context.xml에 작성하면 된다.
- 만약 root-context를 작성하고 싶을 때, root-context.xml에 작성하면 된다.
- @Controller는 어떤 레이어에 해당하는 객체를 표현해준다.
- 어디에도 속하지 않을 것 같으면 @Component라고 달아주면 된다.
(4) 편리하게 VO 만드는 법(lombok)
- lombok은 vo에서 만들었던 getter/setter, toString 등등 다양한 메소드들을 편하게 만들 수 있게 해주는 라이브러리다.
- lombok은 getter/setter, toString을 알아서 만들어준다. 이클립스라던가, sts IDE 자체에 적용해주어야 한다.
(5) lombok 사용법
1. 일단 pom.xml에 lombok을 설치한다.
2. IDE 자체에 lombok을 깐다. D:\dev\mvn\mvnLib\org\projectlombok\lombok\1.18.28>java -jar lombok-1.18.28.jar
cmd에 이런 식으로 입력
3. 그러면 이런 화면이 뜰 것이다.
4. specify location 버튼을 눌러서 D:\dev\setup\spring-tool-suite-3.9.18.RELEASE-e4.21.0-win32-x86_64\sts-bundle\sts-3.9.18.RELEASE\sts.exe 이 경로로 설정한다.
5. 그리고 이런 식으로 사용하면 된다.
import lombok.Data;
@Data
public class MemberVo {
private String id;
private String pwd;
private String nick;
}
롬복을 사용하면 field 한 개를 추가해도 어노테이션을 가지고 전부 다 자동으로 처리한다.
@NoArgsConstructor -> 기본 생성자 생성
@AllArgsConstructor -> 모든 생성자 생성
@Getter -> get 메소드 생성
@Setter -> set 메소드 생성
@ToString -> toString 메소드 생성
@RequiredArgsConstructor -> 필요한 인자만 갖는 생성자(만약 칼럼 중 하나가 final이면 이 필드는 생성자를 통해서 무조건 세팅이 되어야함, final 키워드가 붙은 것을 인자로 받는 생성자)
-> 이 네가지의 어노테이션을 붙이는 건 번거로우니까 @Data에 전부다 모아놓았다.
(5) MemberService를 bean으로 만드는 이유
- spring이 알아서 MemberService와 MemberController을 연결해주게 하고 싶은데 memberService가 스프링 컨테이너에 존재해야 연결해줄 수 있기 때문이다.
'TIL(Today I Learned)' 카테고리의 다른 글
2023.06.22 TIL (0) | 2023.06.22 |
---|---|
2023.06.20 TIL (0) | 2023.06.20 |
2023.06.15 TIL(web.xml, root-context.xml, servlet-context.xml 상세 설명) (0) | 2023.06.15 |
2023.06.14 TIL(스프링과 servlet의 차이, 메이븐 세팅, xml 정보) (0) | 2023.06.14 |
2023.06.13 TIL (0) | 2023.06.13 |