개책개인적으로 참고 되었으면 하는 내용... 에구 붙여넣기 하니 들여쓰기가 이상해 지넹...
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/184, http://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