์์ ์ด ๋๋๊ฐ์ ์์ฝ๋ค ..๋จ์ฐ
Spring์ ์นํ๋ก์ ํธ์์ ์ฝ๋์ ์ข ๋ ์ง์คํ ์์๋๋ก ์นํ๋ก๊ทธ๋จ์ ๋ผ๋๋ฅผ ์ธ์๋์ ํ๋ ์์ํฌ์ด๋ค. ์ด๋ฐ ํ๋ ์์ํฌ ๋ํ ๋ง์ ๋ฐ์ ์ ํ๋ค ๊ธฐ์กด์ xml์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๊ฒฝ์ ์ค๋นํ๋ ๋ ๊ฑฐ์๋ฒ์ ์ด ์๊ณ ํ์ฌ๋ configuration๊ณผ ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์ค์ ์ ์ด์ฉํ๋ค.
๊ธฐ์กด์ jsp์์๋ ํฐ์บฃ์ด ์ง์ ํ ๋ server.xml(ํฌํธ์ ํจ์ค๋ฑ ์ค์ ), web.xml(ํํฐ๋ง), context.xml(DB์ฐ๊ฒฐ)์ ์ง๋ ๋ฆฌํ์คํธ ๋์คํจ์ณ๋ก ๊ฐ๋ค.
ํ์ฌ ์คํ๋ง์ ์ด๋ฐ xml์ค์ ์ ํ๊ฐ์ ํ์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํ๊ณ ๋ด์ฅํฐ์บฃ์ ์ด์ฉํ์ฌ ํฐ์บฃ์ ์ค์น ํ ํ์๊ฐ ์๋ค. ๋ํ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ SQL์ ํธํ๊ฒ ์ฟผ๋ฆฌ๋ง ์ ์์์๊ณ ๋ฐ๋ก ์ค๋ธ์ ํธํ์์ผ๋ก ๋ฐ์์์๊ป ํ๋ ๋ง์ด๋ฐํฐ์ค ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ค.
๊ทธ ์ ์ ์คํ๋ง์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ์ดํดํ๊ธฐ ์ํ ๋ ๊ฑฐ์ ๋ฒ์ ์ ์ดํด ๋ณผ ์์ ์ด๋ค. ๋ ๊ฑฐ์๋ ๋ง ๊ทธ๋๋ก ์ค๋๋ ์คํ๋ง ๋ฒ์ ์ด๋ค. ์ด๋์๋ xml๋ก ๋ชจ๋ ์ค์ ์ ํ๋ค.
1. Sping ๋ค์ด๊ฐ๊ธฐ์ ์ ํํ์ต ์ฌํญ
- java์ธ์ด์ ๊ธฐ๋ณธ ์ง์
- ์๋ธ๋ฆฟ,JSP ๊ดํ ๊ธฐ๋ณธ ์ง์ ๋ชจ๋ธ1,๋ชจ๋ธ2๊ธฐ๋ณธ์ ์ธ๊ฐ๋
- html, javascript, css ์ธ ์ ์ด์ฟผ๋ฆฌ ๊ธฐ๋ณธ ์ง์
- sql ๊ธฐ๋ณธ ์ง์
2. Spring ์ค์นํ๊ธฐ
- ํ๊ฒฝ๋ณ์ ์ค์ (๋ดpc ๊ณ ๊ธ์ค์ ์ ๋ค์ด๊ฐ์ jdk์ ํ )
- ํฐ์บฃ8.5 ์ญ์ 9 ์ค์น
https://spring.io/tools3/sts/all
3. Spring legacy ๊ตฌ์กฐ ์ดํด๋ณด๊ธฐ
์ ๋ค๊ฐ ๋ง๊ฒ์ ๋์น๊ฒ..
1) Maven Dependencies
maven dependencies(๋ฒ์ ๊ด๋ฆฌํ๋ก๊ทธ๋จ)์ ํ๋ก์ ํธ ๋ด ์กด์ฌํ์ง์๊ณ ๋ฏธ๋ฌ์ฌ์ดํธ์ ์กด์ฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๋ค. C:\Users\it\.m2 ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ค์ ๋ชฉ๋ก์ด ํ์ธ ๊ฐ๋ฅํ๋ค.
(๋ฆฌ๋ ์ค์ ๋ ํ์งํ ๋ฆฌ์ ๊ฐ์ ์ญํ , ์ฐ๋ถํฌ ๋ฏธ๋ฌ์ฌ์ดํธ์ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ชจ์ฌ์๋ ๊ฒ๊ณผ ๊ฐ๋ค.)
๋ฉ์ด๋ธ ๋ํ๋์ค๋ ๋์ผํ๊ฒ ๋ฏธ๋ฌ์ฌ์ดํธ๊ฐ ์กด์ฌํ๊ณ ๊ทธ ๋ชฉ๋ก์ ๋์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋ก์ ํธ์์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ์ pom.xml ์ ์ ์ด๋๊ณ ๋ฐฐํฌํ ๋ ์ด๋ฆ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ฐ๊ฒฐํ์ฌ ์คํํด์ค๋ค.
(๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด์ m2์ ๋ฐ๊ณ ๋น๋์ํจ๋ค. )
๋ง์ฝ m2๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด ์ญ์ ๋๋ฉด ํ๋จ์ problems์ ์๋ฆผ์ฐฝ์ด ๋จ๊ฒ๋๋๋ฐ ๋ ํ์งํ ๋ฆฌ๋ ์ ๋ฐ์ดํธ๋์ง๋ง ๋น๋๊ฐ ๋์ง์๋๋ค. ๋น๋๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. ์์กด์ฑ๋๋ฌธ์ ์ญ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ฃผ์ด๋ ์๋ ๋๊ฐ ์๋๋ฐ ์ด๋ ๋ ํ์งํ ๋ฆฌํ์ผ์ ํต์งธ๋ก ๋ ๋ ค๋ฒ๋ฆฌ๊ณ ํค๋ฉด ๋ค์ ์ ํ ์ด ๋๋ค.
๋ฉ์ด๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
ex) gson๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ณด์
์คํ๋ง์์๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฉ์ด๋ธ์ผ๋ก ์ด๋ฆ๋ง ์ฐ๋ฉด ๋๋ค.
์ฌ์ง ์ญ์
์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
<dependencise><dependencise> ๊ฐ ํ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
pom.xml์ ์ ์ด์ค ํ์ผ๊ณผ ์ค์ ๊ฒฝ๋ก๋ฅผ ํ์ธํ ์ ์๋ค.โ
๊ธฐ์กด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ์ libํด๋์ ์ง์ ๋ณต์ฌ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋งํ๋ฉด ๋ฉ์ด๋ธ์ด ์์์ ํด์ค๋ค. ๋ ์ฉ ๋๋์ด
2) xml์ค์ ํ์ผ ์ดํด๋ณด๊ธฐ
์ฒ์ ์๋ฒ๊ฐ ์คํ์ด ๋๋ฉด ํฐ์บฃ์ด xmlํ์ผ๋ค์ ์คํํ๋ค.
๊ฐ์ฅ๋จผ์ ์คํ๋๋ ํ์ผ์ src ๋ด์ web.xmlํ์ผ์ด๋ค.
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param> // 1. ์ต์ด ์ง์
๋ก๋ฅผ ์ค์ ํ ์ ์๋ค.
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener> // 2. root์ servlet-context๋ฅผ ์ฝ์ด์ฃผ๋ ๋ก๋๋ฆฌ์ค๋ ์์ฑ
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet> // 3. ์๋ธ๋ฆฟ ๋ค์์ผ๋ก ๋ค์ด์จ ๊ฒ๋ค์ ์๋ธ๋ฆฟ ํด๋์ค๊ฒฝ๋ก๋ก ์ฐ๊ฒฐํด์ค๋ค.
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup> // ์ด ์ฝ๋๋๋ฌธ์ ์ฃผ๋ฒ์งธ์ธ servlet-context.xml ์ ๋จผ์ ์ฝ๋๋ค.
</servlet>
<servlet-mapping> // 4. / ๋ก ๋ค์ด์จ ๊ฒ์ appServlet์ ๋งตํํด์ค๋ค๋ ์๋ฏธ์ด๋ค.
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
/WEB-INF/spring/appServlet/servlet-context.xml ์ ์ฝ๋๋ค
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<!-- 1. ์์ผ๋ก๋ @์น์๋ธ๋ฆฟ์ด ์๋ ์น ์ปจํธ๋กค๋ฌ๋ฅผ ๋จผ์ ์ฐพ๊ฒ ๋ค! -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<!-- 2. img src="/resources/aa.jpg">๋ก ์ฐพ์๋ /resources/ ๋ก ์ฐพ์์ฃผ๊ฒ ๋ค. -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<!-- 3. ๊ฐ์ฒด๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋์ด๋ฒ๋ฆฐ๋ค. -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<!-- 4. ์์ผ๋ก prefix๋ /WEB-INF/views/ ์ผ๋ก ์ฐพ๊ณ suffix ์ .jsp๋ก ์ฐพ๊ฒ ๋ค -->
<!-- 5. ํ์ผ์ ๋ฆฌํดํ ๋ ํญ์ ๊ฒฝ๋ก ๋ฐ .jsp๋ก ์ ์ด์ฃผ๊ฒ ์ผ๋ ํ์ผ๋ช
๋ง ์ ์ผ๋ฉด ๋๋ค. -->
<context:component-scan base-package="com.cos.springlegacy" />
<!-- ๋์คํจ์ฒ๊ฐ ๊ฐ์ํ ํจํค์ง -->
<!-- ์ด๋
ธํ
์ด์
๋๋ฆฌ๋ธ๊ณผ -->
<!-- ํ๋ ์์ํฌ๋ ๊ณ ์น๋๊ฑฐ ์๋ ๊ทธ๋ฅ ์จ -->
</beans:beans>
์์ธํ ๋ด๋ ๋์ถฉ๋ด๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง.. ๋๋ต์ ์ผ๋ก ์ ๋ฆฌ๋ฅผ ํด๋ณด์๋ ์คํ๋ง์ ํน์ง์ด ๋ํ๋๋ค.
์ผ๋จ ์คํ์ด ๋๋ฉด ์คํ๋ง ์ปจํ ์คํธ, ์คํ๋ง์ ๋ชจ๋ ์ ๋ณด๊ฐ ์๋ ๋ณด๋ฐ๋ฆฌ๊ฐ ์๊ธด๋ค. ๊ทธ ์์๋ ์ฌ๋ฌ ๋ฐ์ค๊ฐ ์๊ณ ์ฌ๋ฌ ์ ๋ณด๊ฐ ์๋ค. ์คํ๋ง๋ณด๋ฐ๋ฆฌ ์์์๋ ๋ฐ์ค๋ component, controller , service, bean, dao, restcontroller ๋ฑ์ด ์๋ค. ์ด๋ component ๋ ์คํ๋ง์ ์ ๋ง ์ค์ํ ํน์ง์ธ ioc, ์ ์ด๊ถ์ ์ญ์ ์ด๋ผ๋ ํน์ง์ ๊ฐ์ง๋ค. ์ด๋ ๊ธฐ์กด์ A๊ฐ์ฒด์์ B๊ฐ์ฒด๊ฐ ํ์ํ๋ฉด A๊ฐ์ฒด์์๋ new B()๋ฅผ ํด์ค๋ค. ๋ C๊ฐ์ฒด์์ B๊ฐ์ฒด๊ฐ ํ์ํ๋ฉด C๊ฐ์ฒด๋ new B()๋ฅผ ํ๊ฒ๋๋ค. ์ด์ฒ๋ผ ๊ฐ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ์๋ก ํ ๋ ์ง์ new๋ฅผํ์ฌ ๋ถ๋ฅด์ง๋ง ์คํ๋ง์์ IOC์ ํน์ง์ด๋, A๊ฐ์ฒด๊ฐ B๋ผ๋ ๊ฐ์ฒด๊ฐ ํ์ํ ๋ new B()ํ์ง์๊ณ ์คํ๋ง์์ ๋ง๋ค์ด์ค B๊ฐ์ฒด๋ฅผ ์ฌ์ฉ ํ๋ ๊ฒ์ด๋ค.
*์์์ผ์ ์ง๋ฌธํด์ผ๊ฒ๋ DB์์ getinstanseํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋งฅ๋ฝ์ธ๊ฑด๊ฐ? ์ฑ๊ธํคํจํด??
์คํ๋ง์ด ๋ง๋ค์ด์ค, ์ธ๋ถ์์ ์์ฑํด์ A๊ฐ์ฒด์์ ์ฃผ์ , ์ฃผ์ ํ๋ ๊ฒ์ด ๋๋ฒ์งธ ํน์ง์ธ DI
com.cos.__๋ฐ์ ๊ณต๊ฐ์ ์ ~๋ถ ์ค์บํ๋ค.--> @component๋ฅผ ์ฐพ์ ์คํ๋ง์ด ๊ณต๊ฐ ์์ new๋ฅผ ํด์ค๋ค.
์ ์ด์ ์ญ์ , ๋ด๊ฐnew๋ฅผ ํ๋๊ฒ ์๋ ์คํ๋ง์ด ๊ฐ์ฒด๋ฅผ ์ ์ดํ๋ค.
์์กด์ฑ ์ฃผ์ (DI)
๊ทธ ์ญํ ์ web.xml์ <context:component-scan base-package="com.cos.springlegacy"/> ๊ฐ ํด์ค๋ค.
root context์ฝ์
์ด๋ ต๋ค์ใ ~~~
'java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JSP๋ฅผ ์ด์ฉํ ์ ํ ์๊ฐ ํํ์ด์ง ๋ง๋ค๊ธฐ (0) | 2021.02.27 |
---|---|
์คํ๋ง ์์ํ๊ธฐ -2 (0) | 2021.02.27 |
JSP ๋๊ธ๊ธฐ๋ฅ ์ถ๊ฐ (0) | 2021.02.27 |
JSTL ๋ฌธ์์ด ์๋ฅด๊ธฐ (0) | 2021.02.27 |
aws mysql ์๊ฐ ์ค์ ํ๊ธฐ (0) | 2021.02.27 |