본문 바로가기
Java/Spring

Spring) MVC 구조 - Demo, 포워딩 처리

by 박채니 2022. 8. 17.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


MVC 구조

 

Controller

DemoController

/**
 * DispatcherServlet이 먼저 받아서 DemoController를 호출!
 */
@Controller
public class DemoController {
	@Autowired
	private DemoService demoService;
}

@Component를 상속받아 해당 기능을 포함하고 있는 @Controller 어노테이션을 통해 빈으로 등록합니다.

DemoService를 의존주입 받아야하므로, @Autowired 어노테이션을 붙여주었습니다.

 

Service

DemoService interface

public interface DemoService {

}

 

DemoServiceImpl

@Service
public class DemoServiceImpl implements DemoService {
	@Autowired
	private DemoDao demoDao;
}

@Component를 상속받아 해당 기능을 포함하고 있는 @Service 어노테이션을 통해 빈으로 등록합니다.

DemoDao를 의존주입 받아야하므로, @Autowired 어노테이션을 붙여주었습니다.

 

Dao

DemoDao interface

public interface DemoDao {

}

 

DemoDaoImpl

@Repository
public class DemoDaoImpl implements DemoDao {

}

@Component를 상속받아 해당 기능을 포함하고 있는 @Repository 어노테이션을 통해 빈으로 등록합니다.

 

Dto

Dev

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Dev {
	private int no;
	private String name;
	private int career;
	private String email;
	private Gender gender;
	private String[] lang;
	private LocalDateTime createdAt;
}

 

#5. lombok : boilerplate 대신 작성

pom.xml

    <!-- #5. lombok : boilerplate 대신 작성 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>

 


포워딩 처리

Dev 등록 폼 포워딩

 

DemoController

@Controller
public class DemoController {
	
	static final Logger log = LoggerFactory.getLogger(DemoController.class);
	
	@Autowired
	private DemoService demoService;
	
	/**
	 * value : path에 대한 별칭
	 * method : 전송방식 - 작성하지 않으면, 모든 전송방식 허용 
	 */
	@RequestMapping(path = "/demo/devForm.do", method = RequestMethod.GET)
	public String devForm() {
		log.info("{} 요청!", "/demo/devForm.do");
		return "demo/devForm";
	}
}

@콘솔출력값
INFO : com.ce.spring2.demo.controller.DemoController - /demo/devForm.do 요청!

반드시 key=value로 작성해야하지만, value는 key값을 생략 가능합니다.

여기서 "path" 속성이 value의 Alias로 지정되어있기 때문에 'path'속성 또한 key 값을 생략할 수 있습니다.

"method"는 전송 방식을 뜻하며, 지정하지 않으면 모든 전송방식을 허용합니다.