Programming/Java

[완독정리] 자바웹을 다루는 기술 4(스프링최종)- 길벗

armyost 2021. 2. 10. 00:13
728x90

스프링 애너테이션?

DI나 AOP 같은 기능은 따로 XML파일로 설정한 후 애플리케이션에서 사용했습니다. 그러나 애플리케이션의 기능이 복잡해짐에 따라 XML설정파일의 내용도 복잡해졌고 관리에도 문제가 생기기 시작했습니다. 따라서 XML에서 설정하는 방법과 애너테이션 기능을 사용하는 방법 두가지를 혼합해서 사용하고 있습니다. 

 

<context:component-scan> 태그

<context:component-scan> 태그를 사용해 패키지 이름을 지정하면 애플리케이션 실행시 해당 패키지에서 애너테이션으로 지정된 클래스를 빈으로 만들어 줍니다.

애너테이션 기능
@Controller 스프링 컨테이너가 component-scan에 의해 지정한 클래스를 컨트롤러 빈으로 자동 변환
@Service                          //                                                        서비스빈으로 자동변환
@Repository                         //                                                            DAO빈으로 자동변환
@Component                         //                                                                  빈으로 자동변환

 

매서드에 @RequestParam 적용하기

지금까지는 브라우저에서 매개변수를 전송하면 getParameter()매서드를 이용해 값을 얻었습니다. 그런데 전송되어 온 매개변수의 수가 많아지면 일일이 getParameter()매서드를 이용하는 방법은 불편합니다. 이번에는 @RequestParam을 메서드에 적용해 쉽게 값을 얻는 방법을 알아보겠습니다.

public ModelAndView login(@RequestParam("userID") String userID, @RequestParam("userName") String userName, HttpServletRequest request, HttpServletResponse response)

- required 속성을 이용하면 반드시 전달해야 하는 필수 매개변수인 경우와 그렇지 않을 경우를 설정할 수 있습니다.

 

@Autowired 이용해 빈 주입하기

기존 XML 파일에서 각각의 빈을 DI로 주입했던 기능을 코드에서 애너테이션으로 자동으로 수행합니다. @Autowired를 사용하면 별도의 setter나 생성자 없이 속성에 빈을 주입할 수 있습니다. 

@Controller("memberController")
public class MemberControllerImpl implements MemberController{
	@Autowired
	private MemberService memberService;
	@Autowired
	private MemberVO memberVO;
    ...
    

 

메이븐?

스프링이 나온 초기에는 버전이 자주 업데이트 됨에 따라 불편함이 따랐습니다. 업데이트 할 때마다 관련기능의 라이브러리를 일일이 수정해야 했고, 라이브러리 기능이 달라지면 소스도 같이 수정해 주어야 해서 불편했습니다. 그래서 현재는 메이븐과 같은 도구를 이용해 자동으로 스프링의 라이브러리 기능을 관리하도록 메이븐을 사용합니다.

 

메이븐 기반 웹 프로젝트 기본 디렉터리 구조

구성요소 설명
pom.xml 프로젝트 정보가 표시되며 스프링에서 사용되는 여러가지 라이브러리를 설정해 다운로드 할 수 있습니다.
src/main/java 자바 소스 파일이 위치합니다.
src/main/resources 프로퍼티 파일이나 XML파일등 리소스 파일이 위치합니다.
src/main/webapp WEB-INF 등 웹 애플리케이션 리소스가 위치합니다.
src/test/java JUnit등 테스트 파일이 위치합니다.
src/test/resources 테스트 시에 필요한 resource 파일이 위치합니다.