목록전체 (303)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CVzQ2/btrffOEAwaA/sIoP8GB6jCH14klD6ek7oK/img.png)
에러 : PostConstruct cannot be resolved to a type 위와 같이 @PostConstruct, @PreDestroy를 사용하려 했더니 에러가 생긴다. 에러를 클릭해보면 import같은 걸로도 해결할 수 도없다. 해결 : pom.xml에 밑의 코드를 추가해준다. javax.annotation javax.annotation-api 1.3.2 javax.annotations 종속성을 추가해주면 해결되는 문제다. 그리고 다시 에러가 났던 클래스로 돌아가서 import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; 해주면 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BTznd/btrfbZmFlmv/l6iKHKLLkzfyhKjcixKDd0/img.png)
IOC컨테이너란? 객체(bean)의 생명주기를 관리하는 객체 저장소이다. IOC컨테이너와 bean의 생명주기 bean생명주기 관련 함수 bean 자료형 class에 implements InitializingBean, DisposableBean하고 사용할 수 있는 함수 어노테이션@PostConstruct @PreDestroy쓰고 사용할 수 있는 함수 출처 : https://www.youtube.com/watch?v=zKI4GWT5Xzs&list=PLPvokKzUkaLeiLUDKpqRdP8jtLU8lLKgR&index=7 변형 및 요약
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Q2uc1/btrfbYgdILt/mm4aUHKxuskblkzTtI7Fmk/img.png)
xml을 이용해서 의존성 주입하는 것만 있는 줄 알고 있었으나 어노테이션을 이용하여 JAVA로도 객체를 만들고 주입할 수 있다는 것을 알게되어 기록하게 되었다. 사용하는 어노테이션 : @Configuration : 이 클래스는 스프링 설정에 이용하는 클래스입니다.를 뜻함 @Bean : 이것은 객체입니다.를 뜻함 이렇게 JAVA를 사용해서 의존성 주입을 할 수 있다. 하지만 내부적으로는 자바 코드를 xml로 변환하는 방식이어서 xml로 의존성 주입을 하는 방식을 사용하는게 더 나을 것 같다는 생각이 든다. 출처 : https://www.youtube.com/watch?v=MabPKw0HapE&list=PLPvokKzUkaLeiLUDKpqRdP8jtLU8lLKgR&index=6 변형 및 요약
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bkoZ1S/btre33wtwBw/3jOI1GrgtWTOSWm5Q4yeD1/img.png)
xml파일 만들기 1. src/main/resource누르고 마우스 오른쪽 클릭 2. new -> Other...클릭 3. 검색창에 spring치고 Spring Bean Configuration File클릭하고 Next 4. Filename에다 '원하는xml파일명.xml' 치고 Finish 누르기 그럼 이런 파일이 생긴다. 파일명 변경 1. 이름 바꾸고 싶은 파일 클릭하고 마우스 오른쪽 버튼 클릭 2. Refactor -> Rename클릭 끝!
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cVtVsD/btrfcwwGIlZ/DstKB6TYUXvLplEIAkHKq0/img.png)
의존관계 A class에서 B class의 객체를 사용하고있으면, A class는 B class의 객체가 없으면 안되고, 즉, 'A는 B에 의존하고 있다.' 라고 말할 수 있다. 1. 클래스 안에서 객체 생성 ex) new BClass(), new CClass() 2. 외부에서 객체를 생성해서 {setter()나 construct()(=생성자)를 이용해서} 클래스 안에 넣어준다. 여기서 2번을 의존성 주입 즉, DI라고 한다. 의존성 주입(DI) 의존성 주입은 Spring framework의 가장 대표적인 특징이다. 의존성 주입이란, 외부에서 객체를 만들어서 class에 주입하는 방식이다. Dependency(의존) + Injection(주입) = DependencyInjection(의존성 주입) 보통 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dUMXpB/btreY34g772/xRBNFIxQP6TMwSVy35bSEk/img.png)
HandlerMapping HandlerMapping이란 클라이언트가 요청한 주소를 처리할 controller을 지정하는 역할을 하는 것이다. view resolver view resolver란 controller에서 받아온 view파일 명을 경로로 만들어 찾는 역할을 하는 것이다. Spring Framework 동작 원리 1. 클라이언트 요청 2. web.xml 실행 3. web.xml에서 DispatcherServlet이 의 형태로 들어오는 요청을 가로채고 servlet-context.xml을 실행 4. Controller클래스를 bean객체로 만듦 5. Handlermapping이 만들어진 bean객체 중에서 클라이언트의 요청 주소와 맞는 controller 찾음 6. controller 연결 7 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vnoDL/btreVxdzC9N/Kwnj0onvf9jzkK65A44Vq0/img.png)
에러 : cvc-id.3: A field of identity constraint 'web-app-servlet-name-uniqueness' matched element 'web-app', but this element does not have a simple type. 해결방법 : java.sun.com을 JAVA.sun.com으로 고치면 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dIzbVU/btre5ckDchS/SwLdyiocwmpbXTKwyNbQEk/img.png)
home.jsp에서 프로젝트를 실행하려고 했더니 404 error가 생겼다. 의외로 해결은 간단했다. 프로젝트에서 서버를 구동하면 된다. 그러면 위와 같이 home.jsp가 잘뜬다. home.jsp에서 서버 실행을 하거나 검색창에 home.jsp를 쳐서 home.jsp를 실행하는 것이 안되는 이유는 Spring FrameWork의 동작원리 때문이다. Spring FrameWork의 동작원리 클라이언트 요청 (요청한 인터넷 주소 : /first) ↓ 1. web.xml 실행 서버를 실행하면 가장 먼저 web.xml이 실행된다. web.xml의 내용 중 위의 코드에 의해 DispatcherServlet이 요청을 가로채고 servlet-context.xml을 실행한다. 2. servlet-context.xml..