1 XML Response 컨트롤러에서 리턴되는 데이터를 XML로 표현하는 예제입니다. 프로젝트 구성 환경은 요청(Request)헤더의 Accept값과 Content-type에 의해 스프링에서 자동적으로 메시지컨버터를 사용하여 리턴되는 데이터의 타입을 결정해주고 있습니다. 요청(Request)헤더의 Accept값은 @ResponseBody 어노테이션이 붙은 리턴데이터의 타입을, Content-type값은 @RequestBody로 받는 데이터의 타입을 결정합니다. 우선 예제로 XML데이터와 매핑이 될 Model클래스 두개를 생성했습니다. Publication 클래스와 Publications 라는 클래스 입니다. 이 두개의 클래스를 가지고 XML데이터를 생성합니다. 이름에서 알수있듯이 Publications..
1 DWR Library 사용하기 프로젝트를 진행하다가 우연찮게 DWR에 대한 내용을 알게되고 사용해 보았다. 역시 잊어먹지않기위해 기록! Spring MVC와 연동도 가능하며 독립적으로 사용도 가능하다. 지금 프로젝트는 Spring MVC를 사용하는데. DWR에서 사용하는 스크립트의 요청때문에 부득이하게 Spring MVC와는 독립적으로 사용하게 되었다. Spring MVC와는 독립적이지만 Spring과 연동은 되게 설정했다. 우선 DWR을 사용하기 위해 라이브러리 다운! http://directwebremoting.org/dwr/downloads/index.html 2 web.xml source 첫번째로 web.xml에 DWR 서블릿을 정의후 URL 패턴을 정의해준다. DWR을 사용하기 전에는 Con..
1 AbstractExcelView를 이용한 엑셀파일 생성 및 다운로드 엑셀파일 뷰를 생성하는방법으로 여러가지 방법이 있지만, 여기서는 컨트롤러의 메서드에서 String 타입의 뷰 이름을 리턴하고, BeanNameViewResolver를 사용하여 뷰를 생성하는 방법으로 구현하였다. 우선은 스프링 설정코드이다. 세개의 ViewResolver를 설정하였고, 위에서부터 일반 JSP파일의 요청을 받아들이는 InternalResourceViewResolver, 두번째는 뷰 이름과 동일한 빈객체를 뷰 객체로 사용하는 BeanNameViewResolver로 여기서 구현하는 엑셀파일 다운로드요청을 받게 된다, 세번째는 애러페이지를 담당하는 ViewResolver 이다. 마지막에 설정되어있는 excelView는 엑셀파일..
1 어노테이션을 이용한 자동스캔 클래스패스에 위치한 클래스를 검색하여 특정한 어노테이션이 붙은 클래스를 자동으로 빈으로 등록하는 기능을 제공하고 있다. 이 기능을 사용하면 XML 설정 파일에 다양한 빈 정보를 추가하지 않고 특정한 클래스를 빈으로 등록 할 수 있게된다. 스프링 2.0부터 @Repository어노테이션, 2.5부터 Component 어노테이션, @Service 어노테이션, @Controller 어노테이션 이 추가 되었다 이들 어노테이션은 클래스 선언 부분에 붙게된다. @Commponent 어노테이션을 클래에스 적용했다면 태그를 이용하여 스프링이 클래스를 검색할 패키지를 등록하면 된다. 이 태그를 이용하면 @Component 어노테이션이 적용된 클래스 및 그 하위 어노테이션이 적용된 클래스를..
1 어노테이션 기반 설정 - 4 . @PostConstruct , @PreDestroy @PostConstruct어노테이션과 @PreDestroy어노테이션은 라이클 초기화 및 제거과정을 제공한다. @PostConstruct 어노테이션은 의존하는 객체를 설정한 이후에 초기화 작업을 수행 할 메서드에 적용되며, @PreDestroy 어노테이션은 컨테이너에게 객체를 제거하기 전에 호출 될 메서드에 적용된다. 즉, 스프링 설정 파일에서 init-method 속성과 destroy-mehtod속성을 이용하여 명시한 메서드와 동일한 시점에 실행 된다. @Resource 어노테이션과 마찬가지로 CommonAnnotationBeanPostProcessor 클래스를 빈객체로 등록하거나 태그를 사용하면 적용된다.
1 어노테이션 기반 설정 - 3 . @Resource @Resource 어노테이션은 어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용된다. 프로퍼티 및 설정메서드(Setter, Getter)등에 적용시키며 스프링 설정파일에 등록되어있는 빈 객체의 name 속성을 통하여 자동으로 주입된다. (@Autowired 어노테이션이 타입으로 자동 주입을 하는 반면, @Resource 어노테이션은 name속성을 통해 자동 주입을 실행한다) 위의 코드는 스프링 설정파일에 등록된 "spring"이란 name을 가진 빈 객체를 spring프로퍼티에 주입하며, "springTestService"라는 name을 가진 빈 객체를 setService() 메서드의 매개변수에 주입한다. @Resource 어노테이션 역시 스프..
1 어노테이션 기반 설정 - 2 . @Autowired @Autowired 어노테이션은 의존하는 객체를 자동으로 삽입해주며 생성자, 필드, 메서드 세 곳에 적용이 가능하다. @Autowired 어노테이션은 타입을 이용한 프로퍼티 자동설정기능을 제공한다. 위의 코드는 service 프로퍼티에 SpringTestService 타입의 빈 객체를 메서드를 통해 자동으로 주입해준다. @Autowired 어노테이션을 이용하여 자동 주입 설정을 적용하려면 AutowiredAnnotationBeanPostProcessor 클래스를 빈으로 등록해주어야하며 @Required 어노테이션과 마찬가지로 설정을 추가하는것으로 대신해도 된다. @Autowired 어노테이션은 위의 코드와 같이 필드 및 생성자에도 적용시킬 수 있으며..
1 어노테이션 기반 설정 - 1 . @Required @Required 어노테이션은 필수 프로퍼티를 명시 할때 사용된다. 필수 프로퍼티를 지정하려면 먼저 프로퍼티 설정 메서드에 @Requierd 어노테이션을 붙여야한다. 위 코드에서 @Required 어노테이션을 추가해도, 스프링은 해당 프로퍼티를 필수 프로퍼티로 인식하지 않는다. 스프링 설정파일에 @Required를 인식하고 필수프로퍼티로 지정할 수 있는 클래스를 빈 객체로 등록해야 비로서 스프링이 @Required 어노테이션을 알맞게 처리할 수 있게 된다. RequiredAnnotationBeanPostProcessor 클래스는 스프링 컨테이너에 등록된 빈 객체를 조사하여 @Required 어노테이션이 적용된 프로퍼티의 값이 설정되어있는지 여부를 검사..
1 컨테이너 간 계층 BeanFactory와 ApplicationContext 컨테이너는 서로 자식-부모의 계층관계를 가질 수 있다. 컨테이너간 계층 구조를 구성하면, 자식컨테이너에서 부모컨테이너에 정의한 빈 객체에 접근할수 있다. 하지만 부모컨테이너에서는 자식 컨테이너에 정의된 빈 객체에 접근할 수 없다. JAVA에서의 상속관계와 같은 특징이 있다고 생각하면 된다. ApplicationContext나 BeanFactory 컨테이너를 생성할 때 컨테이너간의 계층관계를 구성하려면 컨테이너 생성시 부모컨테이너를 지정해 주면 된다. 위의 childContainer 컨테이너를 생성할 때 부모 컨테이너로 parentContainer를 지정하였다. 이러한 컨테이너간의 계층 관계를 설정해 주면 chlidContain..
1 외부설정 프로퍼티 외부에 프로퍼티 파일을 생성하고 스프링에서 사용할 정보를 따로 관리 할 수가 있다. 한가지 예로 자바 JDBC의 경우 DB의 종류에 따라 코딩을 다르게 해야하며, 한번 변경한 코드는 재컴파일 해야 사용을 할 수가 있게된다. 하지만 외부의 프로퍼티 파일을 생성하고 사용함으로서 프로퍼티파일의 수정을 통하여 컴파일 없이 변경된 정보를 프로젝트에 그대로 반영할 수 있는 장점이 있다 2 외부 프로퍼티파일 위의 프로퍼티 파일은 스프링에서 사용할 datasource 빈 객체의 JDBC 정보이다. 이 파일을 스프링 설정파일에서 사용하고 싶다면 스프링 설정파일에 PropertyPlaceholderConfigurer 클래스를 빈으로 등록 하고 프로퍼티 이름을 설정 파일에서 사용하면 된다. locati..
1 Bean의 라이프 사이클 스프링은 빈 을 관리하는 컨테이너이다. 따라서 빈 객체를 생성하고, 초기화및 소멸 등 일련의 과정들을 담당하게 된다. 즉 스프링 컨테이너에 저장되는 빈 객체는 생성, 초기화, 소멸의 라이프 사이클을 가지게 된다. 스프링컨테이너에 생성되는 빈 객체의 라이프 사이클은 빈 클래스가 구현한 인터페이스에 따라 달라진다. 우선 BeanFactory 컨테이너를 사용할 경우 빈 객체의 라이프 사이클은 이러한 과정을 거치게 된다. 2 BeanFactory 사용 빈 객체 생성BeanNameAware.setBeanName()BeanFactoryAware.setBeanFactory()BeanPostProcessor의 초기화 전처리커스텀 init - methodInitializingBean.afte..
1 부모 빈을 사용한 설정의 재사용 여러개의 빈을 설정 및 추가하다 보면 설정 정보및 내용이 중복되는 경우가 존재한다. 중복되는 설정을 갖는 빈이 다수 존재할 경우, 중복되는 설정정보를 담고있는 부모 빈을 생성하여 부모 빈의 정보를 재사용 할수 있도록 설정 할 수 있다. 여러개의 빈을 설정 및 추가하다 보면 설정 정보및 내용이 중복되는 경우가 존재한다. 중복되는 설정을 갖는 빈이 다수 존재할 경우, 중복되는 설정정보를 담고있는 부모 빈을 생성하여 부모 빈의 정보를 재사용 할수 있도록 설정 할 수 있다. 위의 설정에서 "commonDao" 빈 객체는 밑에 설정된 빈들의 중복된 설정을 정의하고 있다. 또한 abstract 속성을 "true"로 설정하였는데 이는 빈으로 객체를 생성하지 않겠다는 의미이다. 즉 ..
1 의존관계 자동설정 스프링은 의존하는 빈 객체의 타입이나 이름을 이용하여 의존 객체를 자동으로 설정 할 수 있는 기능을 제공한다. 자동설정에는 다음 네 가지의 방식이 존재한다. 2 의존관계의 네 가지 방식 byName : 프로퍼티의 이름과 같은 이름을 갖는 빈 객체를 설정byType : 프로퍼티의 타입과 같은 타입을 갖는 빈객체를 설정constructor : 생성자 파라미터 타입과 같은 타입을 갖는 빈객체를 생성자에 전달autodetect : constructor 방식을 먼저 적용하고, byType 방식을 적용하여 의존 객체를 설정 위 방식중의 한가지를 이용하여 의존객체를 설정하려면 태그에 autowire 속성의 값을 지정해 주면 된다. 또한, 설정파일에포함된 모든 빈객체에 대해 특정 방식의 자동설정을..
1 콜렉션타입 프로퍼티 설정 - 2 . Map Map타입의 프로퍼티를 설정하는 경우에는 태그를 사용한다. 위 SpringTest 클래스는 Map타입의 items 프로퍼티를 가지고 있다. 이때 items에 Map타입의 값을 전달하려면 태그를 사용한다. 태그는 Map에 저장될 key와 value를 나타낸다. 이때 태그 사이에 위치할수 있는 태그는 ,,,,, 등 태그가 위치 할 수 있으며 값태그에도 태그와 동일한 태그들이 위치할 수 있다. 예를 들어 키와 값의 타입이 모두 String 이라면 키태그와 값태그 모두 태그를 사용하여 값을 전 달 할 수 있게된다. 만약 다른 데이터 타입이라면 태그의 경우와 같이 각각의 태그에 데이터타입을 명시해주면 된다. 또한 위의 태그를 보면 내용에 비해 코드의 분량이 상당히 많..
1 콜렉션타입 프로퍼티 설정 - 1 . List & Array 빈으로 설정한 클래스의 프로퍼티 타입이 List 이거나 Map과 같은 콜렉션 타입인 경우, 스프링에서는 각 타입에 맞는 태그를 이용하여 값을 설정 할 수 있도록 하고 있다.첫번째로 List 및 배열에 관한 설정 방법이다. List나 배열타입의 프로퍼티에 값을 전달하기 위해서는 태그를 사용하면 된다. 위의 SpringTest 클래스는 List 타입의 프로퍼티를 가지고 있다. 이경우, 태그를 이용하여 List에 저장될 객체를 설정 할 수 있다. 태그를 이용하여 List에 저장될 객체를 설정한다. 태그를 이용하여 빈으로 설정된 객체를 전달 할 수 있으며, 태그를 이용하여 빈으로 설정되지 않은 임의의 객체를 전 달 할 수도 있다. 만약 List에 저..
1 Bean 생성 및 의존관계 설정 - 2. 프로퍼티 프로퍼티 설정 방식은 setter형태의 설정 메서드를 사용해서 필요한 객체와 값을 전달 받는다. 생성자 설정방식에서의 SpringTest클래스가 생성자로 객체를 주입받던 방식이 아닌 setter메서드를 통해 객체를 전달받는 방식이다. 즉 위의 코드에서 setDao()메서드는 dao 프로퍼티의 값을 설정하게 된다. 스프링에서는 태그를 이용하여 프로퍼티에 값을 설정한다. 태그에서 태그를 통해 빈객체를 전달했듯이 태그 역시 태그로 빈 객체를 프로퍼티값으로 전달 할 수 있다. 기본타입 마찬가지로 태그 대신 태그를 사용하면 되며, 태그도 각각 ref속성과 value 속성으로 프로퍼티 값을 전달 할 수 있다.
1 Bean 생성 및 생성자를 통한 의존관계 설정 스프링은 객체를 담고있는 컨테이너이다. 컨테이너에 저장 될 빈객체와 각 빈객체들간의 의존관계를 XML 파일을 통하여 설정하게 된다. 2 Bean 생성 및 컨테이너를 통한 Bean 사용 스프링 컨테이너가 관리할 빈객체를 생성하기 위해서는 태그를 사용하면 된다. 태그의 class 속성은 생성할 빈 객체의 패키지를 포함한 클래스 이름이며, id속성은 스프링 컨테이너에서 생성된 객체를 구분하는데 사용되는 식별값으로 사용된다. id속성을 name속성으로 바꿔서 사용해도 된다. id속성은 XML의 구성요소 이기 때문에 id속성을 사용할 경우 동일한 id값을 가지는 태그를 설정하면 애러가 발생하며, id속성은 특수분자를 포함할 수 없는 반면에 name 속성은 특수문자..
- Total
- Today
- Yesterday
- mysql convert
- extjs 6 테마
- sencha touch icons
- 스프링
- 스프링 autowired
- with admin option
- extjs
- local repository
- Spring
- 마이바티스 resultmp
- spring autowired
- 로컬저장소
- jboss spring4
- sencha touch icons list
- tiles sitemesh
- with grant option
- tiles vs sitemesh
- 마이바티스 공통 resultmap
- extjs6
- 스프링 컨테이너
- mybatis resultmap
- mysql 한글깨짐
- spring container
- 시간차이구하기
- extjs 6 theme
- custom mapping
- maven 로컬저장소
- 제이보스 스프링4
- mybatis common resultmap
- extjs grid crud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |