1. web.xml 설정(기본만)
다이나믹 웹 프로젝트에 기본 옵션으로 web.xml 을 설정할 수 있는데
여기에 다음 내용을 추가해 주면 xxxxx-servlet.xml 이라는 명칭으로
Springframework 설정을 할수 있다.
1
2
3
4
5
6
7
8
|
<servlet>
<servlet-name>xxxxx</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xxxxx</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
|
여기서 servlet-name 명칭 -servlet.xml 이라는 이름으로 작성해야 한다.
(내부 구조는 모르겠지만 약속되어 있음 여기서는 xxxxx-servlet.xml)
2. xxxxx-servlet.xml 파일 의 객체 등록하는 방법
(1) 빈 객체 올리기 첫번째
1
2
3
|
<bean name="쓸 아이디명칭 beanida"
id="클래스 위치 및 클래스 명칭kr.com.SpringFrameworkabout">
</bean>
|
(2)빈 객체 올리기 두번째- static 객체 올리기
만약에 끌어올 객체가(클래스가) getInstance로 호출되야만 객체를 생성할 수 있는
static 선언된 객체일 경우 컨테이너에 올리는 설정 방법이다.
뒤에 저거만 붙여주면 됨
1
2
3
4
|
<bean name="쓸 아이디명칭 beanida"
id="클래스 위치 및 클래스 명칭kr.com.SpringFrameworkabout"
factory-method="getInstance">
</bean>
|
(3) 빈객체 올리기 세번째- 생성자에 의존 클래스 추가해서 작성하기
생성자에 다른 클래스가 포함되어 있는경우 태그 하나를 추가함
1
2
3
4
5
6
|
<bean name="쓸 아이디명칭 beanida"
id="클래스 위치 및 클래스 명칭kr.com.SpringFrameworkabout">
<constructor-arg>
<ref bean="클래스 위치 및 명칭"/>
</constructor-arg>
</bean>
|
(4) 빈객체 올리기 네번째 setxxx() 함수를 사용해서
static 이 아닌 객체 올리기
방법 : constructor-arg 대신에 아래 내용을 대체함
1
2
3
|
<property name="프로퍼티 이름(임의로 부여하는거">
<reg bean="클래스 명칭">
</property>
|
(5) peoperty 에 기본 데이터 타입의 변수를 붙이기
1
2
3
4
5
6
7
|
<property name="프로퍼티 이름(임의로 부여하나 변수명과 일치함">
<value>3</value>
</property>
<property name="프로퍼티 이름(임의로 부여하는거" ref="추가해야할 클래스 이름">
<reg bean="클래스 명칭"/>
</property>
|
(6) (4)번 내용은 아래 내용으로 치환 가능함
1
2
|
p:프로퍼티 이름 ="3"
p:프로퍼티 이름-ref="클래스 명칭"
|
(7) 특정 메소드를 사용해야만(다른클래스의) 객체가 생성되는 경우
방법 : lookup-method 를 이용함
1
2
3
|
<bean........>
<lookup-method name="쓸 메소드명칭" bean="메소드가 포함된 클래스명칭"/>
</bean>
|
ps . CGLIB 라는 cglib-nodep-2.1.jar 파일을 라이브러리에 추가해야함
(8) 배열 형태(List, map, set, 등등)을
방법: 입력 형태니깐 자료를 직접 입력하는 형태이다.
안에 다음과 같은 코드를 삽입하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<bean.............>
<peoperty name="">
<map>
<entry>
<key><value>값</value><key>
<ref bean="">
</entry>
<entry>
<key><value>2값</value><key>
<ref bean="">
</entry>
</map>
</peoperty>
</bean>
|
(8)-2 List 의 경우
<map> 부분은 아래와 같이 바뀌게 됨
1
2
3
4
|
<list>
<value>1</value>
<value>2</value>
</list>
|
(8)-3 set type(배열인데 중복을 체크해주는 형태)
1
2
3
4
5
6
|
<property name="subset">
<set value-type="java.lang.Integer">
<value>10</value>
<value>20</value>
</set
</property>
|
(9) Properties 타입(Map 인데 환경설정을 위한 타입)
1
2
3
4
5
6
7
8
|
<bean name="client" class="com.spring.bookclient">
<property name="config">
<props>
<prop key="server">localhost</prop>
<prop key="id">samgugji</prop>
</props>
</property>
</bean>
|
3. xxxxx-servlet.xml 파일 의 의존 관계 설정
(1) 기본적인 스타일
1
2
3
4
|
<bean name="/customer/noticeDetail.htm" class="controllers.customer.NoticeDetailController">
<property name="noticeDao" ref="noticeDao"></property>
</bean>
<bean id="noticeDao" class="dao.NoticeDao"></bean>
|
이렇게 하면 NoticeDao.java 객체를 NoticeDetailController
라는 클래스에서 참조할수 있게 설정되었다.
(2) byName , byType 를 property 설정 대신에 autowire="byName"
이렇게 넣어준다면 좀더 쉽게 객체를 연결 할수 있다.
1
2
3
4
|
<bean name="/customer/noticeDetail.htm"
class="controllers.customer.NoticeDetailController" autowire="byName">
</bean>
<bean id="noticeDao" class="dao.NoticeDao"></bean>
|
byName : 이름이 같은 빈 객체를 설정한다.
(물론 빈에 등록된 이름 == .java에서 호출한 이름과 동일)
byType : 타입이 같다고 생각되는 객체를 입력해준다.
(같은 인터페이스를 상속한 객체들(2개이상)이 빈에 등록되어
있다면 에러를 유발하게 된다.)
-- 둘중 하나라도 이름이 바뀌면 엉킬수 있으므로 주의 해야 함.
constructor : byType 이나 빈에 등록된 객체중에서 선택하되
java 파일에 생성된 생성자에서 언급한 파일을 읽어옴
autodetect : byType 과 동일함
+ 위의 4가지 자동설정 에 수동설정 방법도 같이 쓸수 있음
(3) 부모님 설정 가능
1
2
3
4
5
6
7
8
9
|
<bean name="noticeDetail.htm" class="controllers.customer.NoticeDetailController">
<property name="Time" value="100"></property>
</bean>
<bean name="반치스Detail.htm" class="controllers.customer.NoticeDetailController">
<property name="Time" value="100"></property>
</bean>
<bean name="치토스noticeDetail.htm" class="controllers.customer.NoticeDetailController">
<property name="Time" value="100"></property>
</bean>
|
위와 같이 이름만 틀리고 클래스, 참조하는 변수값이 동일한 경우
parent 설정을 가질수 있음
1
2
3
4
5
6
7
|
<bean name="common.htm" class="controllers.customer.NoticeDetailController">
<property name="Time" value="100"></property>
</bean>
<bean id="door" parent="common">
<bean id="window" parent="common">
<bean id="human" parent="common">
|
4. xxxxx-servlet.xml 파일의 범위 설정
(1) 보통 싱글톤으로 생성해 쓰는데 호출시마다 생성하고자 할때가 있음
이때 scope="" 옵션으로 조절이됨
1
2
3
|
<bean name="common.htm" class="controllers.customer.NoticeDetailController" scope="">
<property name="Time" value="100"></property>
</bean>
|
singleton : 스프링 컨테이너1개 1객체 존재
prototype : 빈 사용시마다 생성
request : HTTP 요청시마다 생성
session : HTTP 세션 open 시 1객체 생성
golbal-session : 글로벌 HTTP 세션에 1객체 생성
포플릿(?) 적용 객체에만 적용됨
(2) 충돌상황 : 싱글톤 객체A가 prototype 객체B를 쓰려고 할때
A객체가 더이상 만들어지지않아 B 객체도 A갯수만큼만 생성된다.
이걸 굳이 쓰고자 한다면
(A에서 B 호출시마다 B객체 새로 생성) 아래와 같이
beans에 3줄을 포함하고)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:apo="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
bean 설정에 다음 <aop:scoped-proxy/> 라는 옵션을 추가해준다.
1
2
3
4
5
6
7
|
<bean name="common" class="controllers.customer.NoticeDAO" scope="">
<aop:scoped-proxy/>
</bean>
<bean name="simple.htm" class="controllers.customer.Controller" scope="">
<property name="common" ref="common" />
</bean>
|
댓글 없음:
댓글 쓰기