개책개인적으로 참고 되었으면 하는 내용... 에구 붙여넣기 하니 들여쓰기가 이상해 지넹...

C.    
P64) 스프링컨테이너가 DI를 해줘서 OracleArticleDao articleDao = new OracleArticleDao(); 와 같은 구문이 필요없게 되고 해당 구문이 class에 들어가 있으면 의존성이 강해지게 된다.

D.    P70) lookup method injection

ii.        Singleton bean들은 spring container가 처음 한번만 bean 객체를 생성할 때 해당 singleton bean들의 property나 생성자에 DI를 한다. 그러므로 singleton bean에서 non-singleton bean DI할 수가 없다.(non-singleton bean끼리는 호출시점에 2개의 객체가 생성되어 서로 DI하면 되고, non-singleton에서 singleton을 참조하는 경우는 호출 시점에 non-singleton을 생성하고 초기에 이미 생성되어 있는 singleton DI하면 되므로 문제되지 않는다.)

1.   Application 이나 Business용 서버는 main 함수에서 applicationContext context에 접근할 때,

2.   WebApplication web.xml에서 <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>를 등록해서 root web application context 생성하고 <servlet><servlet-class>org.springframework.web.servlet.DispatcherServlet></servlet-class>를 등록해서 servlet web application context를 생성한 시점에 spring container singleton bean객체들이 생성된다. Root web application

iii.        Singleton bean A non-singleton bean B를 사용한다고 할 때, container singleton bean A를 단지 container가 한번만 생성할 것이고, 따라서 property도 역시 한번만 설정될 것이다. Container bean B가 필요한 매 순간 새로운 객체를 생성하여(특정 method를 호출해서) bean A에게 제공해야 하는 경우 사용 함. 책의 예제에서는 getCommandFactory() method를 호출할 때마다 새로운 CommandFactoryImpl 객체가 생성되어 Processor.process()를 사용할 수 있다.

iv.        http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:fdl:ioc_container:dependencies

v.        http://www.javajigi.net/display/SFL/Method+Injection

E.     Lazily-instantiated beans(spring container에서 바로 bean 생성하지 않고 호출시 생성)

vi.        <bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>

F.     p85) 자동설정은 사용하지 않는 것이 명확할 듯 싶습니다.

G.     p101) InitializingBean이나 DisposableBean과 같은 Spring 프레임웤 소스에 종속성이 있는 것을 사용하기 보다는 init-method destroy-method 속성을 이용하여 initializingBean DisposableBean을 대체 할 때 다음과 같은 장점이 있습니다. (http://whiteship.tistory.com/552)

vii.        초기화 메소드와 소멸자 메소드 이름을 마음대로 정할 수 있습니다.

viii.        Spring 프레임웤 종속성이 생기지 않습니다.

ix.        모든 bean들 에게 공통의 이름을 사용하고 싶다면 <beans /> 태그에서 default-init-method default-destroy-method 속성을 사용하면 됩니다.

x.        <beans /> 태그에 있는 defaut-xxx-mehot 속성을 <bean /> 태그에 있는 xxx-method oveeriding 합니다.

H.    P105) PropertyPlaceholderConfigurer @Configuration @Bean으로 정의하면 안된다. (http://toby.epril.com/?p=964)

xi.        class내에서 사용할 때는 @Value("${database.username}") private String username 과 같은 형식으로 사용하면 된다.

xii.        System property os명을 다음과 같이 가져올 수도 있음 @Value("#{systemProperties['os.name']}")

 

I.      P109) eclipse plug-in ResourceBundle Editor을 사용해서 properties 파일들을 수정하면 편함

xiii.        ApplicationContextAware를 상속받아서 사용하면 spring에 종속적으로 되므로 MessageSourceAccessor 를 사용해서 종속성을 줄여주는 것이 좋다. (http://masterofcoding.tistory.com/category/PROGRAMES/SPRING)

xiv.        ReloadableResourceBundleMessageSource를 사용하면 Application을 재시작하지 않아도 되고 변경된 내용을 참조하고 한글문제도 없다고 하나MessageSourceAccessor에서 읽는 문제가 있다고 좀더 테스트 해봐야 같습니다. Wmc java framework 그대로 사용함. (http://www.javajigi.net/pages/viewpage.action?pageId=2468)

A.     P 205) dispatcher servlet url-pattern '/'로 한 경우 javascript, css등의 static resource에 대해서 servlet이 처리 할 수 있도록 <mvc:resource>를 사용해야 한다. (http://blog.naver.com/PostView.nhn?blogId=kkkkang45&logNo=70092718296), <mvc:view-controller path="/" view-name="welcome"/> 것도 있음

B.     P 208) HTTP Header Accept라는 Header 값을 browser가 고정해서 전달해서 내가 원하는 midiatype으로 반환 받을 수 없으므로…, URL 확장자(http://localhost/test.json), request 'format' parameter, request accept header, defaultContentType 순으로 mediatype을 구하고 해당 mediatype에 맞는 viewResolver viewResolvers defaultViews에 정의되어 있는 값과 비교해서 적당한 것을 찾아서 해당 View를 사용하게 됩니다. ContentNegotiationViewResolver를 주로 사용합니다.

i.        http://dev.anyframejava.org/docs/anyframe/plugin/restweb/1.0.1/reference/html/ch03.html

ii.        http://stove99.tistory.com/19

C.     P 216) forceEncdoing property 값을 true로 해야 response 값도 encoding 됩니다.(http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/filter/CharacterEncodingFilter.html) 이 설정을 하면 form POST 방식으로 전송되는 것에 대해서 encoding이 되고, form GET방식으로 전송되는 것도 encoding하기 위해서는 apache server.xml의 내용을 수정해야 합니다. (http://springmvc.egloos.com/513986)

D.    P 259) return "account/creationForm"의 처리는 .net postback과 같이 생각하면 되면 입력했던 값들을 그대로 가지고 있다. 성공인 경우에는 redirect하는 것이 일반적임

 

E.     P 269) ASP.NET MVC와 같이 client validation 체크는 지원되지 않는다. Bean Validation을 이용할려면 http://www.slideshare.net/kingori/spring-3-jsr-303내용 참고 하고 error메시지를 properties 파일과 연동할려면 파일명을 'ValidationMessage_ko.properies'와 똑같이 만들고(물론 국가별로 '_xx' 는 추가해서 넣고) annotation명에 대한 validation 실패 에러메세지를 같이 작성한다.('예제로 쉽게 배우는 스프링 프레임워크 3.0' 책의 p436~440, p447 내용 참고하세요… 책은 제 자리에 있습니다.)

iv.        Javax.validation.constraints.Min.message={value}이상인 값을 입력해 주세요.

v.        Org.hibernate.validator.constraints.NotEmpty.message=입력해 주세요

F.     P 272) 여러 파일 첨부기능을 확인 할 때 아래의 코드를 참고하고, 파일 확장자는 'StringUtils.getFilenameExtension("testFolder/testjco.txt")'로 구할 수 있음

vi.        List<MultipartFile> multipartFileList = multipartHttpServletRequest.getFiles("file");

vii.             multipartFileList.isEmpty() ß 파일 첨부 안 해도 true값임

viii.         

ix.        for(MultipartFile multipartFile : multipartFileList) {

x.            multipartFile.isEmpty() ß 파일 첨부했는지 확인 가능 함

G.     P 287) SimpleMappingExceptionResolver를 사용해서 특정 Exception일 때 특정 view를 호출하도록 하는 것 많이 사용함, spring에서 발생하는 에러와 jsp에서 발생하는 에러 처리 관련(http://cranix.net/184http://cranix.net/186)

2.     기타

기타 참고 내용
H.   
Spring mvc ajax - http://maxheapsize.com/2010/07/20/spring-3-mvc-ajax-and-jquery-magic-or-better-simplicity/

I.      Spring mvc log4j 관련 - http://www.mkyong.com/spring-mvc/spring-mvc-log4j-integration-example/

J.      view에서 상대경로 참고할 때 - http://www.sivalabs.in/2011/07/context-root-relative-urls-using.html

K.     Spring mvc 3.1 에서 변경된 것 - http://blog.springsource.org/2011/06/13/spring-3-1-m2-spring-mvc-enhancements-2/

L.     jstl 관련 - http://sunfuture.springnote.com/pages/3514717

M.    myBatis 관련 - http://kaludin.egloos.com/2717395, http://www.mybatis.org/spring/sample.html

Posted by 파이팅야
,