<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://angelica127.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://angelica127.github.io/" rel="alternate" type="text/html" /><updated>2020-09-01T13:23:02+09:00</updated><id>https://angelica127.github.io/feed.xml</id><title type="html">Angelica’s Development Blog</title><subtitle>개발하기 위한 정보를 올리는 Blog</subtitle><author><name>Kim Jaewon</name></author><entry><title type="html">Library와 Framework 비교</title><link href="https://angelica127.github.io/dev/library-vs-framework/" rel="alternate" type="text/html" title="Library와 Framework 비교" /><published>2020-02-26T11:00:00+09:00</published><updated>2020-02-26T11:00:00+09:00</updated><id>https://angelica127.github.io/dev/library-vs-framework</id><content type="html" xml:base="https://angelica127.github.io/dev/library-vs-framework/">&lt;h2 id=&quot;library-vs-framework&quot;&gt;Library VS Framework&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;라이브러리와 프레임워크의 차이점이 무엇인지 알아보기&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;library&quot;&gt;Library&lt;/h3&gt;

&lt;p&gt;첫번째로 ‘&lt;strong&gt;라이브러리&lt;/strong&gt;‘에 대해 알아보자.&lt;/p&gt;

&lt;p&gt;라이브러리(Library)의 &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC_(%EC%BB%B4%ED%93%A8%ED%8C%85)&quot;&gt;위키백과&lt;/a&gt;의 정의는 다음과 같다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>Kim Jaewon</name></author><category term="Develop" /><category term="Library" /><category term="Framework" /><category term="Word" /><summary type="html">Library와 Framework</summary></entry><entry><title type="html">설정 정리 - 기타</title><link href="https://angelica127.github.io/spring/final-setting4/" rel="alternate" type="text/html" title="설정 정리 - 기타" /><published>2020-02-21T18:10:00+09:00</published><updated>2020-02-21T18:10:00+09:00</updated><id>https://angelica127.github.io/spring/final-setting4</id><content type="html" xml:base="https://angelica127.github.io/spring/final-setting4/">&lt;h2 id=&quot;spring-framework-시작-전-설정-정리&quot;&gt;Spring Framework 시작 전 설정 정리&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Spring을 이용한 Project를 시작하기 전, 여기까지 진행했던 설정 정리&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Spring Framework를 시작하면서 Lombok, MyBatis 등의 Library를 설치하면서 pom.xml과 servlet-context.xml, root-context.xml, web.xml 등을 여러 번 수정했다. 여태까지 수정했던 내용을 정리해서 올려 두려고 한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;web.xml&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;web-app version=&quot;3.1&quot; xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_3_1.xsd&quot;&amp;gt;

	&amp;lt;!-- The definition of the Root Spring Container shared by all Servlets
		and Filters --&amp;gt;
	&amp;lt;context-param&amp;gt;
		&amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;
		&amp;lt;param-value&amp;gt;/WEB-INF/spring/root-context.xml&amp;lt;/param-value&amp;gt;
	&amp;lt;/context-param&amp;gt;

	&amp;lt;!-- Creates the Spring Container shared by all Servlets and Filters --&amp;gt;
	&amp;lt;listener&amp;gt;
		&amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt;
	&amp;lt;/listener&amp;gt;

	&amp;lt;!-- Processes application requests --&amp;gt;
	&amp;lt;servlet&amp;gt;
		&amp;lt;servlet-name&amp;gt;appServlet&amp;lt;/servlet-name&amp;gt;
		&amp;lt;servlet-class&amp;gt;org.springframework.web.servlet.DispatcherServlet&amp;lt;/servlet-class&amp;gt;
		&amp;lt;init-param&amp;gt;
			&amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;
			&amp;lt;param-value&amp;gt;/WEB-INF/spring/appServlet/servlet-context.xml&amp;lt;/param-value&amp;gt;
		&amp;lt;/init-param&amp;gt;
		&amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;
	&amp;lt;/servlet&amp;gt;

	&amp;lt;servlet-mapping&amp;gt;
		&amp;lt;servlet-name&amp;gt;appServlet&amp;lt;/servlet-name&amp;gt;
		&amp;lt;url-pattern&amp;gt;/&amp;lt;/url-pattern&amp;gt;
	&amp;lt;/servlet-mapping&amp;gt;
	&amp;lt;filter&amp;gt;
		&amp;lt;filter-name&amp;gt;encodingFilter&amp;lt;/filter-name&amp;gt;
		&amp;lt;filter-class&amp;gt;
			org.springframework.web.filter.CharacterEncodingFilter
		&amp;lt;/filter-class&amp;gt;
		&amp;lt;init-param&amp;gt;
			&amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;
			&amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;
		&amp;lt;/init-param&amp;gt;
		&amp;lt;init-param&amp;gt;
			&amp;lt;param-name&amp;gt;forceEncoding&amp;lt;/param-name&amp;gt;
			&amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;
		&amp;lt;/init-param&amp;gt;
	&amp;lt;/filter&amp;gt;
	&amp;lt;filter-mapping&amp;gt;
		&amp;lt;filter-name&amp;gt;encodingFilter&amp;lt;/filter-name&amp;gt;
		&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;
	&amp;lt;/filter-mapping&amp;gt;

&amp;lt;/web-app&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;log4jdbc.log4j2.properties 파일&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# properties 파일의 데이터 저장 형식: key=value
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="web.xml" /><summary type="html">프로젝트 시작 전 최종 정리</summary></entry><entry><title type="html">설정 정리 - root-context.xml과 servlet-context.xml</title><link href="https://angelica127.github.io/spring/final-setting3/" rel="alternate" type="text/html" title="설정 정리 - root-context.xml과 servlet-context.xml" /><published>2020-02-21T18:05:00+09:00</published><updated>2020-02-21T18:05:00+09:00</updated><id>https://angelica127.github.io/spring/final-setting3</id><content type="html" xml:base="https://angelica127.github.io/spring/final-setting3/">&lt;h2 id=&quot;spring-framework-시작-전-설정-정리&quot;&gt;Spring Framework 시작 전 설정 정리&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Spring을 이용한 Project를 시작하기 전, 여기까지 진행했던 설정 정리&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Spring Framework를 시작하면서 Lombok, MyBatis 등의 Library를 설치하면서 pom.xml과 servlet-context.xml, root-context.xml 등을 여러 번 수정했다. 여태까지 수정했던 내용을 정리해서 올려 두려고 한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;root-context.xml&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
	xmlns:mybatis-spring=&quot;http://mybatis.org/schema/mybatis-spring&quot;
	xsi:schemaLocation=&quot;http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd&quot;&amp;gt;

	&amp;lt;!-- Root Context: defines shared resources visible to all other web components --&amp;gt;
	&amp;lt;!-- beans 태그 안에 bean tag를 넣을 수있다. --&amp;gt;
	&amp;lt;!-- &amp;lt;bean&amp;gt; ==&amp;gt; 객체를 선언하는 것 : 자동 생성 (선언을 하는 순간 생성한다.) --&amp;gt;
	&amp;lt;bean id=&quot;hikariConfig&quot; class=&quot;com.zaxxer.hikari.HikariConfig&quot;&amp;gt;
		&amp;lt;!-- 바로 오라클로 가는 거 기본 타입
		&amp;lt;property name=&quot;driverClassName&quot; value=&quot;oracle.jdbc.driver.OracleDriver&quot;&amp;gt;&amp;lt;/property&amp;gt;
		&amp;lt;property name=&quot;jdbcUrl&quot; value=&quot;jdbc:oracle:thin:@402-oracle:1521:orcl&quot;&amp;gt;&amp;lt;/property&amp;gt;
		--&amp;gt;
		&amp;lt;property name=&quot;driverClassName&quot; value=&quot;net.sf.log4jdbc.sql.jdbcapi.DriverSpy&quot;&amp;gt;&amp;lt;/property&amp;gt;

		&amp;lt;!-- DB 접속 정보를 설치한 것에 맞게 변경해 줘야 한다. -&amp;gt; 만약에 11g xe를 설치한 경우 --&amp;gt;
		&amp;lt;property name=&quot;jdbcUrl&quot; value=&quot;jdbc:log4jdbc:oracle:thin:@402-oracle:1521:orcl&quot;&amp;gt;&amp;lt;/property&amp;gt;

		&amp;lt;property name=&quot;username&quot; value=&quot;c##java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
		&amp;lt;property name=&quot;password&quot; value=&quot;java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
	&amp;lt;/bean&amp;gt;

	&amp;lt;!-- HikariCP configuration --&amp;gt;
	&amp;lt;!-- 서버가 시작되면 일정 개수의 Connection을 만들어서 DBCP(DataBaseConnectionPool)에 넣어둔다. --&amp;gt;
	&amp;lt;bean id=&quot;dataSource&quot; class=&quot;com.zaxxer.hikari.HikariDataSource&quot;
		destroy-method=&quot;close&quot;&amp;gt;
		&amp;lt;!-- hikariConfig를 참조한다. 생성자의 파라미터를 뜻하는 태그(constructor - 생성자) --&amp;gt;
		&amp;lt;constructor-arg ref=&quot;hikariConfig&quot; /&amp;gt;
	&amp;lt;/bean&amp;gt;

	&amp;lt;!-- MyBatis - DAO코드 자동 생성 --&amp;gt;
	&amp;lt;!-- HikariCP를 MyBatis에 넣는 것 --&amp;gt;
	&amp;lt;!-- Mapper Interface(메서드 이름) - Mapper xml(SQL) --&amp;gt;
	&amp;lt;bean id=&quot;sqlSessionFactory&quot; class=&quot;org.mybatis.spring.SqlSessionFactoryBean&quot;&amp;gt;
		&amp;lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot;&amp;gt;&amp;lt;/property&amp;gt;
	&amp;lt;/bean&amp;gt;

	&amp;lt;!-- 프로젝트 운영을 하는 상위 패키지로 변경해서 사용한다. --&amp;gt;
	&amp;lt;!-- dao(persitence) - 자동으로 만들어 주기 위한 위치 --&amp;gt;
	&amp;lt;mybatis-spring:scan base-package=&quot;org.zerock&quot;/&amp;gt;

	&amp;lt;context:component-scan base-package=&quot;org.zerock&quot;&amp;gt;&amp;lt;/context:component-scan&amp;gt;
&amp;lt;/beans&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;servlet-context.xml&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans:beans xmlns=&quot;http://www.springframework.org/schema/mvc&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xmlns:beans=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
	xsi:schemaLocation=&quot;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&quot;&amp;gt;

	&amp;lt;!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --&amp;gt;

	&amp;lt;!-- Enables the Spring MVC @Controller programming model --&amp;gt;
	&amp;lt;annotation-driven /&amp;gt;

	&amp;lt;!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --&amp;gt;
	&amp;lt;!-- 프로젝트 운영을 하는 리소스 위치로 변경해서 사용한다. --&amp;gt;
	&amp;lt;resources mapping=&quot;/resources/**&quot; location=&quot;/resources/&quot; /&amp;gt;

	&amp;lt;!-- 기본위치 : webapp --&amp;gt;
	&amp;lt;resources mapping=&quot;/js/**&quot; location=&quot;/js/&quot; /&amp;gt;
	&amp;lt;resources mapping=&quot;/css/**&quot; location=&quot;/css/&quot; /&amp;gt;
	&amp;lt;!-- file upload를 위한 설정 --&amp;gt;
	&amp;lt;resources mapping=&quot;/upload/**&quot; location=&quot;/upload/&quot; /&amp;gt;

	&amp;lt;!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --&amp;gt;
	&amp;lt;beans:bean class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&amp;gt;
		&amp;lt;beans:property name=&quot;prefix&quot; value=&quot;/WEB-INF/views/&quot; /&amp;gt;
		&amp;lt;beans:property name=&quot;suffix&quot; value=&quot;.jsp&quot; /&amp;gt;
	&amp;lt;/beans:bean&amp;gt;

	&amp;lt;!-- 자동으로 스캔하도록 하는 설정: 여러 개 설정 가능 , org.zerock까지만 등록하면 그 밑으로 다 자동 스캔 --&amp;gt;
	&amp;lt;context:component-scan base-package=&quot;org.zerock&quot; /&amp;gt;

&amp;lt;/beans:beans&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="root-context.xml" /><category term="servlet-context.xml" /><summary type="html">프로젝트 시작 전 최종 정리</summary></entry><entry><title type="html">설정 정리 - pom.xml</title><link href="https://angelica127.github.io/spring/final-setting2/" rel="alternate" type="text/html" title="설정 정리 - pom.xml" /><published>2020-02-21T18:00:00+09:00</published><updated>2020-02-21T18:00:00+09:00</updated><id>https://angelica127.github.io/spring/final-setting2</id><content type="html" xml:base="https://angelica127.github.io/spring/final-setting2/">&lt;h2 id=&quot;spring-framework-시작-전-설정-정리&quot;&gt;Spring Framework 시작 전 설정 정리&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Spring을 이용한 Project를 시작하기 전, 여기까지 진행했던 설정 정리&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Spring Framework를 시작하면서 Lombok, MyBatis 등의 Library를 설치하면서 pom.xml과 servlet-context.xml, root-context.xml 등을 여러 번 수정했다. 여태까지 수정했던 내용을 정리해서 올려 두려고 한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;pom.xml&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE project&amp;gt;
&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd&quot;&amp;gt;
	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
	&amp;lt;groupId&amp;gt;org.zerock&amp;lt;/groupId&amp;gt;
	&amp;lt;artifactId&amp;gt;main&amp;lt;/artifactId&amp;gt;
	&amp;lt;name&amp;gt;project0221&amp;lt;/name&amp;gt;
	&amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;
	&amp;lt;version&amp;gt;1.0.0-BUILD-SNAPSHOT&amp;lt;/version&amp;gt;
	&amp;lt;properties&amp;gt;
		&amp;lt;java-version&amp;gt;1.8&amp;lt;/java-version&amp;gt;
		&amp;lt;org.springframework-version&amp;gt;5.0.7.RELEASE&amp;lt;/org.springframework-version&amp;gt;
		&amp;lt;org.aspectj-version&amp;gt;1.9.0&amp;lt;/org.aspectj-version&amp;gt;
		&amp;lt;org.slf4j-version&amp;gt;1.7.25&amp;lt;/org.slf4j-version&amp;gt;
	&amp;lt;/properties&amp;gt;
	&amp;lt;!-- 여기 밑으로 복사, 위는 프로젝트 정보 --&amp;gt;

	&amp;lt;!-- 라이브러리 등록 : 기본 다운로드 저장소 - maven.org --&amp;gt;
	&amp;lt;!-- maven에 등록된 라이브러리 찾아보기 : search.maven.org --&amp;gt;
	&amp;lt;dependencies&amp;gt;
		&amp;lt;!-- Spring --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-context&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
			&amp;lt;exclusions&amp;gt;
				&amp;lt;!-- Exclude Commons Logging in favor of SLF4j --&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;commons-logging&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;commons-logging&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
			&amp;lt;/exclusions&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-webmvc&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- AspectJ --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.aspectj&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;aspectjrt&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.aspectj-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- Logging --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;slf4j-api&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.slf4j-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jcl-over-slf4j&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.slf4j-version}&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;slf4j-log4j12&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.slf4j-version}&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;log4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;log4j&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.2.15&amp;lt;/version&amp;gt;
			&amp;lt;exclusions&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;javax.mail&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;mail&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;javax.jms&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;jms&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;com.sun.jdmk&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;jmxtools&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
				&amp;lt;exclusion&amp;gt;
					&amp;lt;groupId&amp;gt;com.sun.jmx&amp;lt;/groupId&amp;gt;
					&amp;lt;artifactId&amp;gt;jmxri&amp;lt;/artifactId&amp;gt;
				&amp;lt;/exclusion&amp;gt;
			&amp;lt;/exclusions&amp;gt;
			&amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- SQL 로그를 제대로 보기 위한 라이브러리 : log4jdbc-log4j2 --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.bgee.log4jdbc-log4j2&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;log4jdbc-log4j2-jdbc4&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.16&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- @Inject --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.inject&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;javax.inject&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- Servlet --&amp;gt;
		&amp;lt;!-- Servlet은 web.xml에 tag랑 연결되어 있다. pom.xml을 수정하면 web.xml의 &amp;lt;web-app&amp;gt;의
			속성을 version에 맞게 바꿔줘야 한다. 2.5 -&amp;gt; 3.1.0 으로 수정 --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;javax.servlet-api&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;3.1.0&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.servlet.jsp&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jsp-api&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.1&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jstl&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.2&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- JSON / XML --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/
		jackson-databind --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;com.fasterxml.jackson.core&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jackson-databind&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.9.4&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- File Upload --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;commons-fileupload&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;commons-fileupload&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.3.3&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- Test --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-test&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.18.0&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;4.12&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- DB 관련 라이브러리 --&amp;gt;
		&amp;lt;!-- Oracle JDBC --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;oracle&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;ojdbc8&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;12.2.0&amp;lt;/version&amp;gt;
			&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;
			&amp;lt;systemPath&amp;gt;${project.basedir}/src/main/webapp/WEB-INF/lib/ojdbc8.jar&amp;lt;/systemPath&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- 커넥션 풀 라이브러리 --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;com.zaxxer&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;HikariCP&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.7.4&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- ORM 프로그램 : MyBatis --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybtis --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.mybatis&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;mybatis&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;3.4.6&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- mybatis와 spring을 연동하기 위한 라이브러리 --&amp;gt;
		&amp;lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybtis-spring --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.mybatis&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;mybatis-spring&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.3.2&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

		&amp;lt;!-- spring의 JDBC 관련 라이브러리 --&amp;gt;
		&amp;lt;!-- transaction 처리 관련 : commit, rollback --&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-tx&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;spring-jdbc&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;

	&amp;lt;/dependencies&amp;gt;
	&amp;lt;build&amp;gt;
		&amp;lt;plugins&amp;gt;
			&amp;lt;plugin&amp;gt;
				&amp;lt;artifactId&amp;gt;maven-eclipse-plugin&amp;lt;/artifactId&amp;gt;
				&amp;lt;version&amp;gt;2.9&amp;lt;/version&amp;gt;
				&amp;lt;configuration&amp;gt;
					&amp;lt;additionalProjectnatures&amp;gt;
						&amp;lt;projectnature&amp;gt;org.springframework.ide.eclipse.core.springnature&amp;lt;/projectnature&amp;gt;
					&amp;lt;/additionalProjectnatures&amp;gt;
					&amp;lt;additionalBuildcommands&amp;gt;
						&amp;lt;buildcommand&amp;gt;org.springframework.ide.eclipse.core.springbuilder&amp;lt;/buildcommand&amp;gt;
					&amp;lt;/additionalBuildcommands&amp;gt;
					&amp;lt;downloadSources&amp;gt;true&amp;lt;/downloadSources&amp;gt;
					&amp;lt;downloadJavadocs&amp;gt;true&amp;lt;/downloadJavadocs&amp;gt;
				&amp;lt;/configuration&amp;gt;
			&amp;lt;/plugin&amp;gt;
			&amp;lt;plugin&amp;gt;
				&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
				&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
				&amp;lt;version&amp;gt;2.5.1&amp;lt;/version&amp;gt;
				&amp;lt;configuration&amp;gt;
					&amp;lt;source&amp;gt;${java-version}&amp;lt;/source&amp;gt;
					&amp;lt;target&amp;gt;${java-version}&amp;lt;/target&amp;gt;
					&amp;lt;compilerArgument&amp;gt;-Xlint:all&amp;lt;/compilerArgument&amp;gt;
					&amp;lt;showWarnings&amp;gt;true&amp;lt;/showWarnings&amp;gt;
					&amp;lt;showDeprecation&amp;gt;true&amp;lt;/showDeprecation&amp;gt;
				&amp;lt;/configuration&amp;gt;
			&amp;lt;/plugin&amp;gt;
			&amp;lt;plugin&amp;gt;
				&amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
				&amp;lt;artifactId&amp;gt;exec-maven-plugin&amp;lt;/artifactId&amp;gt;
				&amp;lt;version&amp;gt;1.2.1&amp;lt;/version&amp;gt;
				&amp;lt;configuration&amp;gt;
					&amp;lt;mainClass&amp;gt;org.test.int1.Main&amp;lt;/mainClass&amp;gt;
				&amp;lt;/configuration&amp;gt;
			&amp;lt;/plugin&amp;gt;
		&amp;lt;/plugins&amp;gt;
	&amp;lt;/build&amp;gt;
&amp;lt;/project&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="pom.xml" /><summary type="html">프로젝트 시작 전 최종 정리</summary></entry><entry><title type="html">Spring Framework Project 시작하기 정리</title><link href="https://angelica127.github.io/spring/final-setting/" rel="alternate" type="text/html" title="Spring Framework Project 시작하기 정리" /><published>2020-02-21T17:55:00+09:00</published><updated>2020-02-21T17:55:00+09:00</updated><id>https://angelica127.github.io/spring/final-setting</id><content type="html" xml:base="https://angelica127.github.io/spring/final-setting/">&lt;h2 id=&quot;spring-framework-시작-정리&quot;&gt;Spring Framework 시작 정리&lt;/h2&gt;

&lt;p&gt;포스트 중…&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;개발 환경
    &lt;ul&gt;
      &lt;li&gt;자바 : oracle.com&lt;/li&gt;
      &lt;li&gt;STS : IDE(통합개발툴)
        &lt;blockquote&gt;
          &lt;p&gt;spring 3.xx -&amp;gt; 재시작&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
      &lt;li&gt;Oracle : oracle.com : 12c -&amp;gt; 11xe / 18xe
        &lt;blockquote&gt;
          &lt;p&gt;사용자정의 11g : java00,
      12c이상 : c##java00&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
      &lt;li&gt;SQL Developer : oracle.com
        &lt;blockquote&gt;
          &lt;p&gt;사용자 생성/권한
사용자로 접속
board table 생성&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;1_1. Rombok 라이브러리 셋팅 -&amp;gt; 카페
  –&amp;gt; 만약에 라이브러리 등록이 제대로 되지 않으면 getter와 setter에 오류가 있다고 나온다.
 =&amp;gt; DTO에 getter, setter, toString(), 생성자를 만들어 주면 된다.
 =&amp;gt; @Setter -&amp;gt; DI 적용을 @Autowired나 @Inject로 변경&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;프로젝트 생성
    &lt;ul&gt;
      &lt;li&gt;개발 환경 Spring변경
        &lt;blockquote&gt;
          &lt;p&gt;new &amp;gt; Spring Legacy Project
Spring MVC Project
 org.zerock.main.controller&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
      &lt;li&gt;오라클 드라이버 복사 : /WEB-INF/lib
        &lt;blockquote&gt;
          &lt;p&gt;프로젝트 안에 ojdbc8.jar(oracle12c)&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
      &lt;li&gt;pom.xml의 property 이하 복사 붙여 넣기 -&amp;gt; 다운로드 -&amp;gt; 빌드 -&amp;gt; 확인(기다림)&lt;/li&gt;
      &lt;li&gt;Maven &amp;gt; Update Project&lt;/li&gt;
      &lt;li&gt;경고 : log4j.xml -&amp;gt; 카페 참조 수정&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;프로젝트 설정
    &lt;ul&gt;
      &lt;li&gt;web.xml -&amp;gt; 이전 것을 복사&lt;/li&gt;
      &lt;li&gt;root-context.xml :DB 관련 설정-내컴
        &lt;blockquote&gt;
          &lt;p&gt;복사&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
      &lt;li&gt;servlet-context.xml : web 관련설정
        &lt;blockquote&gt;
          &lt;p&gt;복사&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
      &lt;li&gt;jdbc-log4j2를 사용하기 위해서
        &lt;blockquote&gt;
          &lt;p&gt;log4jdbc.log4j2.properties 복사
위에 파일이 없으면 root-context.xml에서 기본 정보를 사용하도록 한다.&lt;/p&gt;
        &lt;/blockquote&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;tomcat 서버 만들기
    &lt;blockquote&gt;
      &lt;p&gt;tomcat 다운로드 -&amp;gt; 설치&lt;/p&gt;
      &lt;blockquote&gt;
        &lt;p&gt;http://tomcat.apache.org/ - 9.0
sts - 서버 생성 -&amp;gt; 설정&lt;/p&gt;
      &lt;/blockquote&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
  &lt;li&gt;코드 작성(board)
    &lt;blockquote&gt;
      &lt;p&gt;src/main/java
org.zerock.board.controller.BoardController
org.zerock.board.service.BoardService
org.zerock.board.dto.BoardDTO
org.zerock.board.mapper.BoardMapper
src/main/resource
org/zerock/board/mapper/BoardMapper.xml
 -&amp;gt; mapper.xml을 복사 -&amp;gt; 수정해서 사용&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
&lt;/ol&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="pom.xml" /><summary type="html">프로젝트 시작 최종 정리</summary></entry><entry><title type="html">Spring Framework 라이브러리 - log4jdbc-log4j2</title><link href="https://angelica127.github.io/spring/log4jdbc-log4j2/" rel="alternate" type="text/html" title="Spring Framework 라이브러리 - log4jdbc-log4j2" /><published>2020-02-21T16:00:00+09:00</published><updated>2020-02-21T16:00:00+09:00</updated><id>https://angelica127.github.io/spring/log4jdbc-log4j2</id><content type="html" xml:base="https://angelica127.github.io/spring/log4jdbc-log4j2/">&lt;h2 id=&quot;log4jdbc-log4j2-라이브러리&quot;&gt;log4jdbc-log4j2 라이브러리&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;SQL 로그를 제대로 보기 위한 라이브러리 등록&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;MyBtis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리한다. 따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 ‘?’로 치환된다. 이런 문제를 해결하기 위해서 SQL을 변환해서 PreparedStatement에 사용된 ‘?가 어떤 값으로 처리되었는지 확인하는 기능을 추가해야 한다. SQL 로그를 제대로 보기 위해서는 log4jdbc-log4j2 라이브러리를 사용한다.&lt;/p&gt;

&lt;h3 id=&quot;1-pomxml-정의&quot;&gt;1. pom.xml 정의&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;dependency 태그로 정의&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;!-- SQL 로그를 제대로 보기 위한 라이브러리 : log4jdbc-log4j2 --&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 --&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.bgee.log4jdbc-log4j2&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;log4jdbc-log4j2-jdbc4&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;1.16&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-로그-설정-파일-추가&quot;&gt;2. 로그 설정 파일 추가&lt;/h3&gt;

&lt;p&gt;라이브러리를 추가한 후 1) 로그 설정 파일을 추가하는 작업과 2) JDBC의 연결 정보를 수정해야 한다.&lt;/p&gt;

&lt;h3 id=&quot;로그-설정-파일&quot;&gt;로그 설정 파일&lt;/h3&gt;

&lt;p&gt;src/main/resources 밑에 ‘&lt;strong&gt;log4jdbc.log4j2.properties&lt;/strong&gt;‘파일을 추가한다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/log4jdbc.png&quot; alt=&quot;log4jdbc&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;properties 파일이 없기 때문에 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;src/main/resources&lt;/code&gt; 우클릭 &amp;gt; New &amp;gt; Other &amp;gt; General &amp;gt; File 에서 확장자를 properties로 직접 입력한다.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;log4jdbc.log4j2.properties&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# properties 파일의 데이터 저장 형식: key=value
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;properties 파일에 한글 입력이 되지 않는 경우&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;파일 우클릭 &amp;gt; properties &amp;gt; Resource &amp;gt; Text file encoding 을 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UTF-8&lt;/code&gt;로 바꿔준다.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/log4jdbc2.png&quot; alt=&quot;log4jdbc2&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;‘net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator’ 확인하는 방법&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/log4jdbc3.png&quot; alt=&quot;log4jdbc3&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;3-jdbc-연결-정보-수정&quot;&gt;3. JDBC 연결 정보 수정&lt;/h3&gt;

&lt;h3 id=&quot;정보-수정&quot;&gt;정보 수정&lt;/h3&gt;

&lt;p&gt;log4jdbc를 이용하는 경우 JDBC 드라이버와 URL 정보를 수정해야 한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;root-context.xml 중 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;'id=hikariConfig'&lt;/code&gt;인 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;bean&amp;gt;&lt;/code&gt;태그를 수정한다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;수정 전&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;bean id=&quot;hikariConfig&quot; class=&quot;com.zaxxer.hikari.HikariConfig&quot;&amp;gt;
  &amp;lt;property name=&quot;driverClassName&quot; value=&quot;oracle.jdbc.driver.OracleDriver&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;jdbcUrl&quot; value=&quot;jdbc:oracle:thin:@402-oracle:1521:orcl&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;username&quot; value=&quot;c##java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;password&quot; value=&quot;java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;수정 후&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;bean id=&quot;hikariConfig&quot; class=&quot;com.zaxxer.hikari.HikariConfig&quot;&amp;gt;
  &amp;lt;!-- 바로 오라클로 가는 기본 타입
  &amp;lt;property name=&quot;driverClassName&quot; value=&quot;oracle.jdbc.driver.OracleDriver&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;jdbcUrl&quot; value=&quot;jdbc:oracle:thin:@402-oracle:1521:orcl&quot;&amp;gt;&amp;lt;/property&amp;gt;
  --&amp;gt;

  &amp;lt;property name=&quot;driverClassName&quot; value=&quot;net.sf.log4jdbc.sql.jdbcapi.DriverSpy&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;!-- DB 접속 정보를 설치한 것에 맞게 변경해 줘야 한다. -&amp;gt; 만약에 11g xe를 설치한 경우 --&amp;gt;
  &amp;lt;property name=&quot;jdbcUrl&quot; value=&quot;jdbc:log4jdbc:oracle:thin:@402-oracle:1521:orcl&quot;&amp;gt;&amp;lt;/property&amp;gt;

  &amp;lt;property name=&quot;username&quot; value=&quot;c##java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;password&quot; value=&quot;java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;dataSource() method에서 변경되는 부분은 JDBC 드라이버의 class를 ‘net.sf.log4jdbc.sql.jdbcapi.DriverSpy’로 수정하는 작업과 JDBC 연결 URL 부분에서 중간에 ‘log4jdbc’ 문자열이 추가되는 부분이다. 이 두 설정이 제대로 되어 있지 않으면 데이터베이스의 로그가 정상적으로 기록되지 않는다.&lt;/p&gt;

&lt;h3 id=&quot;4-systemoutprintln-과-log의-차이&quot;&gt;4. System.out.println() 과 Log의 차이&lt;/h3&gt;

&lt;p&gt;현 시점에서 System.out.println()과 Log는 둘 다 Console 창에서 찍히기 때문에 별 차이가 없다고 느껴지지만 서버를 운용하기 시작한다면 System.out.println()는 console 창에 찍히고, Log는 별도의 text 파일로 저장된다.&lt;/p&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="library" /><category term="log4jdbc" /><category term="log4j2" /><summary type="html">SQL 로그 확인을 위한 라이브러리</summary></entry><entry><title type="html">Spring Framework 라이브러리 - 4. MyBatis</title><link href="https://angelica127.github.io/spring/mybatis-connect/" rel="alternate" type="text/html" title="Spring Framework 라이브러리 - 4. MyBatis" /><published>2020-02-21T11:00:00+09:00</published><updated>2020-02-21T11:00:00+09:00</updated><id>https://angelica127.github.io/spring/mybatis-connect</id><content type="html" xml:base="https://angelica127.github.io/spring/mybatis-connect/">&lt;h1 id=&quot;spring-framework에서-많이-사용하는-라이브러리-3가지-설치하기&quot;&gt;Spring Framework에서 많이 사용하는 라이브러리 3가지 설치하기&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;Spring Framework를 처음 시작하면서 하는 여러 설정들은 &lt;a href=&quot;https://github.com/angelica127/SpringFramwork/&quot;&gt;github&lt;/a&gt;를 참고하도록 한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;spring과-db-구조&quot;&gt;Spring과 DB 구조&lt;/h2&gt;

&lt;p&gt;데이터 삽입의 경우&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Spring → MyBatis → HikariCP → OracleDriver(JDBC) → Oracle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;데이터 불러오기일 경우&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Oracle → OracleDriver(JDBC) → HikariCP → MyBatis → Spring&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;자동화된 프로그램을 만들기 위한 DB 구조&lt;/li&gt;
  &lt;li&gt;HikariCP는 속도 향상을 위해 Connection Pool 라이브러리를 사용하는 것&lt;/li&gt;
  &lt;li&gt;MyBatis는 DAO코드를 자동으로 생성해 준다.&lt;/li&gt;
  &lt;li&gt;인터페이스와 SQL문만 저장해 놓으면 프로그램이 처리되도록 만드는 것&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;mybatis-라이브러리-등록mybatis&quot;&gt;MyBatis 라이브러리 등록(&lt;a href=&quot;http://www.mybatis.org/mybatis-3/&quot;&gt;MyBatis&lt;/a&gt;)&lt;/h2&gt;

&lt;p&gt;MyBatis는 ‘&lt;strong&gt;SQL Mapping 프레임워크&lt;/strong&gt;‘로 ‘&lt;em&gt;SQL Mapper&lt;/em&gt;‘의 한 종류이다. MyBtis는 기존의 SQL을 그대로 활용할 수 있다는 장점이 있고, 진입장벽이 낮은 편이어서 JDBC의 대안으로 많이 사용한다. Spring Framework의 특징 중 하나는 다른 Framework들을 배척하는 대신에 다른 Framework들과의 연동을 쉽게 하는 추가적인 Library들이 많다는 것으로, MyBatis 역시 ‘&lt;strong&gt;mybatis-spring&lt;/strong&gt;‘이라는 Library를 통해서 쉽게 연동작업을 처리할 수 있다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;MyBatis 장점&lt;/p&gt;

    &lt;ol&gt;
      &lt;li&gt;자동으로 Connection close() 가능&lt;/li&gt;
      &lt;li&gt;MyBatis 내부적으로 PreparedStatement 처리&lt;/li&gt;
      &lt;li&gt;#{prop}와 같이 속성을 지정하면 내부적으로 자동 처리&lt;/li&gt;
      &lt;li&gt;리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;sql-mapper와-orm&quot;&gt;SQL Mapper와 ORM&lt;/h2&gt;

&lt;p&gt;SQL Mapper와 ORM을 ‘&lt;strong&gt;Persistence Framewor&lt;/strong&gt;‘라고 한다.
Persistence Framework는 JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으면 안정적인 구동을 보장한다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;# ORM(Object Relational Mapping, 객체-관계 매핑)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ORM은 데이터베이스 객체를 자바 객체로 매핑함으로써 객체 간의 관계를 바탕으로 SQL을 자동으로 생성해 준다. 다시 말해서 객체를 통해 간접적으로 데이터베이스의 데이터를 다룬다는 것이다. ORM을 이용하면 SQL Query가 아닌 직관적인 코드(Method)로 데이터를 조작할 수 있다.&lt;/p&gt;

&lt;p&gt;ORM은 관계형 데이터베이스의 ‘&lt;strong&gt;관계&lt;/strong&gt;‘를 Object에 반영하자는 것이 목적이다. 이 ‘관계’를 바탕으로 SQL을 자동으로 생성한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;데이터베이스 데이터 ← Mapping → Object&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ORM의 예) JPA, Hibernate 등&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;# SQL Mapper&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SQL Mapper는 ORM과 다르게 SQL을 명시해 줘야 하며, 단순히 필드를 매핑시키는 것이 목적이다. 즉, SQL Mapper는 SQL문장으로 직접 데이터베이스의 데이터를 다룬다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;SQL ← Mapping → Object&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SQL Mapper의 예) Mybatis, JdbcTempletes 등&lt;/p&gt;

&lt;p&gt;Reference : &lt;a href=&quot;https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html&quot;&gt;SQL Mapper와 ORM&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;1-pomxml에-라이브러리-등록&quot;&gt;1. pom.xml에 라이브러리 등록&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;dependency 태그로 필요한 라이브러리를 등록한다.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;!-- ORM 프로그램 : MyBatis --&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybtis --&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.mybatis&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;mybatis&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;3.4.6&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;

&amp;lt;!-- mybatis와 spring을 연동하기 위한 라이브러리 --&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybtis-spring --&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.mybatis&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;mybatis-spring&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;1.3.2&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;

&amp;lt;!-- spring의 JDBC 관련 라이브러리 --&amp;gt;
&amp;lt;!-- transaction 처리 관련 : commit, rollback --&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;spring-tx&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;spring-jdbc&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-root-contexntxml에서-설정&quot;&gt;2. root-contexnt.xml에서 설정&lt;/h3&gt;

&lt;p&gt;MyBatis에서 가장 핵심적인 객체는 SQLSession과 SQLSessionFactory이다. SQLSessionFactory는 내부적으로 SQLSession을 만들어 내는 존재이다. 개발에서는 SQLSession을 통해서 Connection을 생성하거나 원하는 SQL을 전달하고, 결과를 리턴 받는 구조로 작성하게 된다.&lt;/p&gt;

&lt;p&gt;스프링에 SQLSessionFactory를 등록하는 작업은 SQLSessionFactoryBean을 이용한다. 패키지를 보면 MyBatis의 패키지가 아니라 mybatis-spring 라이브러리의 클래스임을 알 수 있다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;root-contexnt.xml 추가 내용&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;root-contexnt.xml의 ‘NameSpaces’ 탭을 확인하여 ‘mybatis-spring’이 체크되어 있는 지 확인한다.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mybatis-scan&amp;gt;&lt;/code&gt;이라는 태그를 이용하여 MyBatis가 동작할 때 Mapper를 인식할 수 있도록 root-context.xml에 추가하기 위함&lt;/p&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mybatis-spring:scan base-package=&quot;org.zerock&quot;/&amp;gt;&lt;/code&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mybatis-spring:scan base-package=&quot;org.zerock&quot;/&amp;gt;&lt;/code&gt; 태그의 ‘base-package’ 속성은 지정된 패키지의 모든 MyBatis와 관련된 것을 찾아서 처리한다.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/mybatis.png&quot; alt=&quot;mybatis&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;코드&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;!-- MyBatis - DAO코드 자동 생성 --&amp;gt;
&amp;lt;!-- HikariCP를 MyBatis에 넣는 것 --&amp;gt;
&amp;lt;!-- Mapper Interface(메서드 이름) - Mapper xml(SQL) --&amp;gt;
&amp;lt;bean id=&quot;sqlSessionFactory&quot; class=&quot;org.mybatis.spring.SqlSessionFactoryBean&quot;&amp;gt;
  &amp;lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot;&amp;gt;&amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;

&amp;lt;!-- 프로젝트 운영을 하는 상위 패키지로 변경해서 사용한다. --&amp;gt;
&amp;lt;!-- dao(persitence) - 자동으로 만들어 주기 위한 위치 --&amp;gt;
&amp;lt;mybatis-spring:scan base-package=&quot;org.zerock&quot;/&amp;gt;

&amp;lt;!-- 자동으로 스캔하도록 하는 설정: 여러 개 설정 가능 , org.zerock까지만 등록하면 그 밑으로 다 자동 스캔 --&amp;gt;
&amp;lt;context:component-scan base-package=&quot;org.zerock&quot;&amp;gt;&amp;lt;/context:component-scan&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;3-spring에서-mybatis-사용하기&quot;&gt;3. Spring에서 Mybatis 사용하기&lt;/h3&gt;

&lt;p&gt;Mapper를 xml과 Interface + Annotation의 형태로 작성한다. Mapper는 SQL과 그에 대한 처리를 지정하는 역할을 한다.&lt;/p&gt;

&lt;p&gt;여기에서는 Annotation을 이용하지 않고 ‘&lt;strong&gt;Interface와 XML&lt;/strong&gt;‘을 이용하여 ‘&lt;strong&gt;Mapper를 작성&lt;/strong&gt;‘한다. Interface에는 Method를 선언하고 Mapper.xml 파일에 SQL문을 작성한다.&lt;/p&gt;

&lt;p&gt;1) Mapper Interface를 만든다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Interface에는 Method를 정의하고, 구현하지 않는다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/mybatis2.png&quot; alt=&quot;interface&quot; /&gt;&lt;/p&gt;

&lt;p&gt;2) Mapper.xml을 작성한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Mapper.xml에는 MyBatis의 XML Mapper에서 이용하는 태그에 대한 설정이 필요하다.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE mapper
    PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
    &quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;https://mybatis.org/mybatis-3/ko/getting-started.html&quot;&gt;mybatis.org 참조 - ‘시작하기 &amp;gt; 매핑된 SQL 구문 살펴보기 탭’&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;MyBatis를 이용해서 SQL을 처리할 때 Annotation을 이용하는 방식이 편리하지만, SQL이 복잡하거나 길어지는 경우에는 ‘&lt;strong&gt;XML&lt;/strong&gt;‘을 이용하는 방식을 더 선호한다. mybatis-spring의 경우 ‘&lt;strong&gt;Mapper Interface와 XML&lt;/strong&gt;‘을 동시에 이용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/mybatis3.png&quot; alt=&quot;xml&quot; /&gt;&lt;/p&gt;

&lt;p&gt;XML을 작성해서 사용할 때에는 ‘&lt;strong&gt;XML의 파일 위치&lt;/strong&gt;‘와 XML 파일에 지정하는 ‘&lt;strong&gt;namespace 속성&lt;/strong&gt;‘이 중요하다.&lt;/p&gt;

&lt;p&gt;XML 파일 위치의 경우 Mapper Interface가 있는 곳에 같이 작성하거나 다음 그림처럼 src/main/resources 구조에 XML을 저장할 폴더를 생성할 수 있다. XML 파일의 이름은 가능하다면 ‘&lt;strong&gt;Mapper Inteface&lt;/strong&gt;‘와 ‘&lt;strong&gt;같은 이름&lt;/strong&gt;‘을 이용하는 것이 가독성을 높여준다.&lt;/p&gt;

&lt;p&gt;XML Mapper를 이용할 때 신경써야 하는 부분은 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mapper&amp;gt;&lt;/code&gt;태그의 ‘&lt;strong&gt;namespace 속성값&lt;/strong&gt;‘이다. MyBatis는 Mapper Interface와 XML을 Interface의 이름과 namespace 속성값을 가지고 판단한다. 위와 같이 org.zerock.mapper.BoardMapper interface가 존재하고, XML의 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mapper namespace='org.zerock.mapper.BoardMapper'&amp;gt;&lt;/code&gt;와 같이 동일한 이름이 존재하면, 이를 병합해서 처리한다.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;select&amp;gt;&lt;/code&gt;태그의 id 속성의 값은 ‘&lt;strong&gt;Method의 이름&lt;/strong&gt;‘과 동일하게 맞춰야 한다. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;select&amp;gt;&lt;/code&gt;태그의 경우 resultType 속성을 가지는데 이 값은 interface에 선언된 ‘&lt;strong&gt;Method의 return type&lt;/strong&gt;‘과 동일하게 작성한다.&lt;/p&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="library" /><category term="ORM" /><category term="MyBatis" /><summary type="html">lombok과 HikariCP, MyBatis까지</summary></entry><entry><title type="html">Spring Framework 라이브러리 - 3. HikariCP</title><link href="https://angelica127.github.io/spring/HikariCP/" rel="alternate" type="text/html" title="Spring Framework 라이브러리 - 3. HikariCP" /><published>2020-02-20T16:48:00+09:00</published><updated>2020-02-20T16:48:00+09:00</updated><id>https://angelica127.github.io/spring/HikariCP</id><content type="html" xml:base="https://angelica127.github.io/spring/HikariCP/">&lt;h1 id=&quot;spring-framework에서-많이-사용하는-라이브러리-3가지-설치하기&quot;&gt;Spring Framework에서 많이 사용하는 라이브러리 3가지 설치하기&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;Spring Framework를 처음 시작하면서 하는 여러 설정들은 &lt;a href=&quot;https://github.com/angelica127/SpringFramwork/&quot;&gt;github&lt;/a&gt;를 참고하도록 한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;spring과-db-구조&quot;&gt;Spring과 DB 구조&lt;/h2&gt;

&lt;p&gt;데이터 삽입의 경우&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Spring → MyBatis → HikariCP → OracleDriver(JDBC) → Oracle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;데이터 불러오기일 경우&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Oracle → OracleDriver(JDBC) → HikariCP → MyBatis → Spring&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;자동화된 프로그램을 만들기 위한 DB 구조&lt;/li&gt;
  &lt;li&gt;HikariCP는 속도 향상을 위해 Connection Pool 라이브러리를 사용하는 것&lt;/li&gt;
  &lt;li&gt;MyBatis는 DAO코드를 자동으로 생성해 준다.&lt;/li&gt;
  &lt;li&gt;인터페이스와 SQL문만 저장해 놓으면 프로그램이 처리되도록 만드는 것&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;hikaricp-라이브러리-등록hikaricp&quot;&gt;HikariCP 라이브러리 등록(&lt;a href=&quot;https://github.com/brettwooldridge/HikariCP&quot;&gt;HikariCP&lt;/a&gt;)&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;HikariCP는 Connection Pool Library로 Connection Pool이란 DB와 연결하는데 사용하는 Connection을 미리 만들어서 담아 두도록 하는 것이다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;일반적으로 여러 명의 사용자를 동시에 처리해야 하는 Web Application의 경우 Database 연결을 이용할 때는 ‘&lt;strong&gt;Connection Pool&lt;/strong&gt;‘을 이용하므로, 아예 스프링에 Connection Pool을 등록해서 사용하는 것이 좋다. Java에서는 DataSource라는 인터페이스를 통해서 Connection Pool을 사용한다. DataSource를 통해 매번 Databse와 연결하는 방식이 아닌, 미리 연결을 맺어주고 반환하는 구조를 이용하여 성능 향상을 꾀한다.&lt;/p&gt;

&lt;p&gt;Connection Pool을 사용하는 이유는 ‘&lt;strong&gt;Server를 운영&lt;/strong&gt;‘할 때 여러 명의 사용자를 처리하는 경우 ‘&lt;strong&gt;미리 Connection을 만들어 놓음&lt;/strong&gt;‘으로써 서버와 DB를 연동하는데 있어서 ‘&lt;strong&gt;속도의 향상&lt;/strong&gt;‘을 꾀한다.&lt;/p&gt;

&lt;h3 id=&quot;1-pomxml에-라이브러리-등록&quot;&gt;1. pom.xml에 라이브러리 등록&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;dependency 태그 추가&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP --&amp;gt;
&amp;lt;!-- 커넥션 풀 라이브러리 --&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;com.zaxxer&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;HikariCP&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;2.7.4&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-root-context-bean-태그-정의&quot;&gt;2. root-context &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;bean&amp;gt;&lt;/code&gt; 태그 정의&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;DB는 웹 서버에서 연결하는 것이 아니라 내 컴퓨터에서 DB와 연결하는 것으로 root-context에 정의한다. &lt;a href=&quot;github.com/brettwooldridge/HikariCP#configuration-knobs-baby&quot;&gt;HikariCP github 참고&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;root-context.xml은 스프링이 로딩되면서 읽어 들이는 문서이므로, 주로 이미 만들어진 클래스들을 이용해서 스프링의 bean으로 동록할 때 사용된다. 외부 jar파일 등으로 사용하는 클래스들은 bean 태그를 이용해서 작성하는 경우가 대부분이다.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;!-- beans 태그 안에 bean tag를 넣을 수있다. --&amp;gt;
&amp;lt;!-- &amp;lt;bean&amp;gt;태그 ==&amp;gt; 객체를 선언하는 것 : 자동 생성 (선언을 하는 순간 생성한다.) --&amp;gt;
&amp;lt;bean id=&quot;hikariConfig&quot; class=&quot;com.zaxxer.hikari.HikariConfig&quot;&amp;gt;
  &amp;lt;property name=&quot;driverClassName&quot; value=&quot;oracle.jdbc.driver.OracleDriver&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;jdbcUrl&quot; value=&quot;jdbc:oracle:thin:@402-oracle:1521:orcl&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;username&quot; value=&quot;c##java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
  &amp;lt;property name=&quot;password&quot; value=&quot;java06&quot;&amp;gt;&amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;

&amp;lt;!-- HikariCP configuration --&amp;gt;
&amp;lt;!-- 서버가 시작되면 일정 개수의 Connection을 만들어서 DBCP(DataBaseConnectionPool)에 넣어둔다. --&amp;gt;
&amp;lt;bean id=&quot;dataSource&quot; class=&quot;com.zaxxer.hikari.HikariDataSource&quot; destroy-method=&quot;close&quot;&amp;gt;
  &amp;lt;!-- hikariConfig를 참조한다. 생성자의 파라미터를 뜻하는 태그(constructor - 생성자) --&amp;gt;
  &amp;lt;constructor-arg ref=&quot;hikariConfig&quot; /&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="library" /><category term="ConnectionPool" /><category term="HikariCP" /><summary type="html">lombok과 HikariCP, MyBatis까지</summary></entry><entry><title type="html">Spring Framework 라이브러리 - 2. OJDBC</title><link href="https://angelica127.github.io/spring/db-connect/" rel="alternate" type="text/html" title="Spring Framework 라이브러리 - 2. OJDBC" /><published>2020-02-20T11:32:00+09:00</published><updated>2020-02-20T11:32:00+09:00</updated><id>https://angelica127.github.io/spring/db-connect</id><content type="html" xml:base="https://angelica127.github.io/spring/db-connect/">&lt;h2 id=&quot;spring-framework와-oracle-database-연동&quot;&gt;Spring Framework와 Oracle Database 연동&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;HikariCP와 MyBatis를 연동하기 전에 Oracle Databse 연동하기&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;spring과-db-구조&quot;&gt;Spring과 DB 구조&lt;/h3&gt;

&lt;p&gt;데이터 삽입의 경우&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Spring → MyBatis → HikariCP → OracleDriver(JDBC) → Oracle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;데이터 불러오기일 경우&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Oracle → OracleDriver(JDBC) → HikariCP → MyBatis → Spring&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;자동화된 프로그램을 만들기 위한 DB 구조&lt;/li&gt;
  &lt;li&gt;HikariCP는 속도 향상을 위해 Connection Pool 라이브러리를 사용하는 것&lt;/li&gt;
  &lt;li&gt;MyBatis는 DAO코드를 자동으로 생성해 준다.&lt;/li&gt;
  &lt;li&gt;인터페이스와 SQL문만 저장해 놓으면 프로그램이 처리되도록 만드는 것&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;라이브러리-등록&quot;&gt;라이브러리 등록&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;jar를 내 컴퓨터에 다운 받고 프로젝트 내에 lib 폴더를 만들어 복사한 후 pom.xml에 등록하는 방법을 이용&lt;/p&gt;
  &lt;blockquote&gt;
    &lt;p&gt;Oracle의 버전 확인 : select * from v$version;&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;1-oracle-ojdbcjar-찾기&quot;&gt;1. Oracle ojdbc.jar 찾기&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Oracle 버전을 확인하고, 버전에 맞는 jdbc.jar를 사용한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;sqldeveloper 실행 폴더의 jdbc 폴더 아래 lib 폴더 확인&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Oracle 설치 시 지정한 Base 폴더(app 폴더) 확인&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Ex) D:\app\사용자\virtual\product\12.2.0\dbhome_1\jdbc\lib&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/ojdbc.png&quot; alt=&quot;ojdbc&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;2-ojdbcjar를-프로젝트로-복사&quot;&gt;2. ojdbc.jar를 프로젝트로 복사&lt;/h3&gt;

&lt;p&gt;프로젝트의 적당한 위치에 ‘lib’폴더를 만든 후 ojdbc.jar를 복사한다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/ojdbc2.png&quot; alt=&quot;ojdbc&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;3-pomxml에-라이브러리-등록&quot;&gt;3. pom.xml에 라이브러리 등록&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;dependencies tag 안에 dependency tag로 등록한다.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt; oracle &amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;ojdbc8&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;12.2.0&amp;lt;/version&amp;gt;
  &amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;
  &amp;lt;systemPath&amp;gt;${project.basedir}/src/main/webapp/WEB-INF/lib/ojdbc8.jar&amp;lt;/systemPath&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;systemPathsms basedir과 함께 ojdbc.jar를 복사한 경로이다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;4-maven-dependencies에-등록이-되었는-지-확인한다&quot;&gt;4. Maven Dependencies에 등록이 되었는 지 확인한다.&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/ojdbc3.png&quot; alt=&quot;ojdbc&quot; /&gt;&lt;/p&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="library" /><category term="oracle" /><category term="Database" /><summary type="html">Spring과 DB 연결</summary></entry><entry><title type="html">Spring Framework 라이브러리 - 1. Lombok</title><link href="https://angelica127.github.io/spring/start-spring-framework/" rel="alternate" type="text/html" title="Spring Framework 라이브러리 - 1. Lombok" /><published>2020-02-19T00:00:00+09:00</published><updated>2020-02-20T12:32:00+09:00</updated><id>https://angelica127.github.io/spring/start-spring-framework</id><content type="html" xml:base="https://angelica127.github.io/spring/start-spring-framework/">&lt;h2 id=&quot;spring-framework에서-많이-사용하는-라이브러리-3가지-설치하기&quot;&gt;Spring Framework에서 많이 사용하는 라이브러리 3가지 설치하기&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Spring Framework를 처음 시작하면서 하는 여러 설정들은 &lt;a href=&quot;&amp;quot;https://github.com/angelica127/SpringFramwork/&amp;quot;&quot;&gt;Github&lt;/a&gt;를 참고하도록 한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;lombok-라이브러리-등록&quot;&gt;lombok 라이브러리 등록&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;getter, setter, toString(), 생성자 등을 자동으로 생성해 주는 라이브러리&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이클립스와 스프링 플러그인 만으로도 스프링 개발은 가능하지만, Lombok을 이용하면 Java 개발 시 자주 사용하는 getter, setter, toString(), 생성자 들을 자동으로 생성해 주므로 클래스를 설계할 때 유용하다.&lt;/p&gt;

&lt;p&gt;Lombok은 다른 jar 파일과 달리 프로젝트의 코드에서만 사용되는 것이 아니라 Eclipse 에디터 내에서도 사용되어야 하기 때문에 별도로 설치한다.&lt;/p&gt;

&lt;h3 id=&quot;1-lombok-jar-파일-다운로드&quot;&gt;1. Lombok jar 파일 다운로드&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://projectlombok.org/download&quot;&gt;lombok&lt;/a&gt; 홈페이지의 Downlod 탭에서 jar 파일을 다운로드 받는다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lombok.png&quot; alt=&quot;lombok home&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;2-명령-프롬프트에서-다운받은-lombokjar-파일이-있는-경로로-이동한다&quot;&gt;2. 명령 프롬프트에서 다운받은 lombok.jar 파일이 있는 경로로 이동한다.&lt;/h3&gt;

&lt;p&gt;Ex) D:\dwon\api&lt;/p&gt;

&lt;h3 id=&quot;3-명령-프롬프트에서-java--jar-lombokjar-명령어를-실행한다&quot;&gt;3. 명령 프롬프트에서 java -jar lombok.jar 명령어를 실행한다.&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lombok2.png&quot; alt=&quot;lombok2&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;4-사진과-같은-창이-나오고-sts나-eclipse의-설치-경로를-자동으로-찾는다&quot;&gt;4. 사진과 같은 창이 나오고 STS나 Eclipse의 설치 경로를 자동으로 찾는다.&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lombok3.png&quot; alt=&quot;lombok3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;이때 경로를 찾지 못한다면 Specify location 버튼을 눌러 경로를 직접 지정해준다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;경로를 찾은 화면&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lombok4.png&quot; alt=&quot;sts dir&quot; /&gt;&lt;/p&gt;

&lt;p&gt;경로를 찾은 후 Install / Update 버튼을 눌러 Install을 진행한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Install 완료&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lombok5.png&quot; alt=&quot;설치 완료&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;5-install이-완료된-후-sts나-eclipse의-실행위치에-lombokjar가-추가되었는지-확인한다&quot;&gt;5. Install이 완료된 후 STS나 Eclipse의 실행위치에 lombok.jar가 추가되었는지 확인한다.&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;lombok.jar 추가된 것 확인&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lombok6.png&quot; alt=&quot;설치 확인&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;6-sts에-만든-spring-project의-pomxml에-lombokjar를-등록한다&quot;&gt;6. STS에 만든 Spring Project의 pom.xml에 lombok.jar를 등록한다.&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;dependencies&amp;gt;&lt;/code&gt; 태그 밑에 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/code&gt;태그로 등록해야 한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;spring-test&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;${org.springframework-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.projectlombok&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;lombok&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;1.18.0&amp;lt;/version&amp;gt;
  &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;4.12&amp;lt;/version&amp;gt;
  &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;   
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;test를 위해 springframework의 test 라이브러리를 등록하고&lt;/li&gt;
  &lt;li&gt;lombok 라이브러리를 버전에 맞게 등록한다.&lt;/li&gt;
  &lt;li&gt;Test를 위한 junit 라이브러리를 Up version 시킨다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;7-pomxml에-라이브러리를-정의한-후-sts를-재-실행한다&quot;&gt;7. pom.xml에 라이브러리를 정의한 후 STS를 재 실행한다.&lt;/h3&gt;

&lt;h3 id=&quot;8-lombok을-이용한-의존성di-주입&quot;&gt;8. Lombok을 이용한 의존성(DI) 주입&lt;/h3&gt;

&lt;p&gt;스프링에서는 생성자를 이용한 의존성 주입과 setter 메서드를 이용한 주입으로 의존성을 주입한다. 설정 방식은 주로 XML이나 Annotation을 이용해서 처리한다.&lt;/p&gt;

&lt;p&gt;Lombok을 이용해서 setter 메서드를 자동으로 구현되도록 하기 위해 component를 scan하기 위한 기본 패키지를 설정해야 하며, 이를 위해서 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;'root-context.xml'&lt;/code&gt;의 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;'NameSpaces'&lt;/code&gt; 탭에서 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;'context'&lt;/code&gt;라는 항목을 체크한다.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/images/lombok7.png&quot;&gt;&lt;img src=&quot;/assets/images/lombok7.png&quot; alt=&quot;root-context&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;/assets/images/lombok7-1.png&quot;&gt;&lt;img src=&quot;/assets/images/lombok7-1.png&quot; alt=&quot;root-context&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;context-항목을-체크하는-이유&quot;&gt;context 항목을 체크하는 이유?&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;root-context.xml&lt;/code&gt;이나 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;servlet-context.xml&lt;/code&gt;에서 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;component-scan&amp;gt;&lt;/code&gt;태그에 의해서 Spring에서 자동으로 생성되어 지는 Annotation을 scan 할 수 있게 입력해야 하기 때문에 context 항목을 체크해야 한다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;root-context.xml&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;	&amp;lt;context:component-scan base-package=&quot;org.zerock&quot;&amp;gt;&amp;lt;/context:component-scan&amp;gt;	&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;servlet-context.xml&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;자동으로 스캔하도록 하는 설정: 여러 개 설정 가능 , org.zerock까지만 등록하면 그 밑으로 다 자동 스캔&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;context:component-scan base-package=&quot;org.zerock&quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h3 id=&quot;annotation&quot;&gt;Annotation&lt;/h3&gt;

&lt;p&gt;@Data - setter, getter, toString(), 생성자를 자동으로 만들기&lt;/p&gt;

&lt;p&gt;@Setter - setter를 이용한 DI 적용&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Setter를 이용해서 DI를 적용할 때&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;@Autowired - Spring annotation&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;@Inject - Java annotation - service or dao&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;up to JDK 1.7&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;@Setter(on Method = @__({@Autowired}))&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;from JDK 1.8&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;@Setter(onMethod_ = {@Autowired})&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name>Kim Jaewon</name></author><category term="Spring" /><category term="Framework" /><category term="library" /><category term="lombok" /><summary type="html">lombok과 HikariCP, MyBatis까지</summary></entry></feed>