bean생성
Package : board.controller
Class : BoardController
예제 패키지와 클래스를 만들었을 때 출력이 되지 않는 이유는 bean이 제대로 설정되지 않아서일 가능성이 높다.
생성자에 있는 내용이 출력이 되지 않았다는 것은 bean생성이 안되었다는 의미이다.
처음 프로젝트를 생성했을 때 자동으로 생성된 com.example.demo는 자동으로 bean 설정이 되있는데 그 외에 다른 패키지를 생성해서 클래스를 새로 만들었을 때는 bean 설정을 따로 해줘야 한다.
즉, com.example.demo.controller 패키지를 생성하면 com.example.demo 하위로 들어있기 때문에 자동으로 빈이 설정되었는데 board.controller은 새로 만든거기 때문에 안된다.
따라서 bean을 설정해줘야 하는데 그 방법은 프로젝트명Application.java 파일에
ComponentScan(basePackage = {“com.example.demo”, “board.controller”})
를 선언해주면 된다.
* com.example.demo이걸 선언 안해줘도 되는데 선언 안해줬을 때 오류가 날수도 있기 때문에 그냥 써주는게 좋다.
** 사용자가 정의한 클래스들이 자동으로 빈으로 등록되기 때문에 스프링 부트에서는 패키지 이름을 주의해서 작성해야 한다.
결론
만약 루트 패키지인 "com.example.demo" 가 아닌 다른 패키지에 클래스를 작성하면 스프링 컨테이너는 해당 클래스를 빈으로 등록하지 않는다.
다른 패키지의 클래스까지 스캔 대상에 포함 시키려면 메인 클래스에 @ComponentScan을 추가하여 패키지를 직접 지정하면 된다.
Lombok 사용
Package : board.bean
Class : BoardDTO
Lombok 사용가능하도록 설정
@RestController는 JSP 같은 뷰를 별도로 만들지 않는 대신에 컨트롤러 메소드가 리턴하는 데이터 자체를 클라이언트로 보낸다.
클라이언트에 전달되는 데이터는 문자열, DTO, 컬렉션 형태의 자바 객체인데, 자바 객체가 전달되는 경우에는 자동으로 JSON으로 변환하여 처리하게 된다.
System.out.print(boardDTO);
--> 주소값이 안나온다.
--> 이유 : BoardDTO를 lombok의 @Data를 잡아줬기 때문에
BoardDTO(seq=1, name=허균, subject=홍길동전, content=의로운 의적의 이야기, logtime=Mon Nov 04 16:32:33 KST 2024)
이렇게 나온다.
'백엔드 > Spring' 카테고리의 다른 글
Spring Boot, React와 같이 작업하기 (0) | 2024.11.11 |
---|---|
Spring Boot, React와 같이 작업하기 (1) | 2024.11.07 |
Spring Boot, 프로젝트 만들기 (0) | 2024.11.06 |
Spring Boot, 스프링 부트란 (1) | 2024.11.05 |
Spring, 스프링과 JDBC (0) | 2024.10.31 |