Spring 개발환경 설정하기(1) - 프로젝트 생성하기~톰캣 설정
Spring 개발환경 설정하기(2) - 라이브러리 다운로드~DB연동
Spring 개발환경 설정하기(3) - Spring+MyBatis 연동하기
Spring 개발환경 설정하기(4) - Spring + MyBatis 설계(Mapper, DAO)
오늘은 Spring 개발환경 설정이 완료된 프로젝트에 Bootstrap 테마를 적용해보려 합니다.
한동안 서버개발만 하다보니 화면 작업은 오랫만이네요.
1. 원하는 부트스트랩 테마를 찾아서 다운받습니다.
저는 Start Bootstrap에서 제공하는
Agency 테마를 선택했습니다.
구글에 free bootstrap을 검색하면 많이 나와요~
참고)
https://startbootstrap.com/template-categories/all/
2. 다운받은 테마의 압축을 풉니다.
내용은 아래와 같습니다.
3. 리소스 파일들이 들어갈 자리를 만들어줍니다.
src/main/webapp 디렉토리 아래에 resources 폴더를 추가
4. 다운받은 테마의
폴더들만 resources 폴더에 복사-붙여넣기 합니다.
※추후 bootstrap 테마의 css, js만 따로 관리하고 싶다면 resources/boostrap 안에 넣어주세요.
5. src/main/webapp/WEB-INF/views에 index.jsp 파일을 만듭니다.
다운받은 테마의 index.html파일을 편집기로 열고 내용을 index.jsp 파일로 복사한 후,
제일 위에 아래의 코드를 추가해주세요.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page session="false"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
| cs |
6. 기존 컨트롤러에 아래의 코드를 추가합니다.
4장에서 사용했던 home 메소드는 주석처리 하거나, Mapping url을 바꿔주세요.
혹은 아래 코드의 Mapping url을 다른걸로 변경할 수도 있습니다.
@GetMapping("/")
public String index(HttpServletRequest request) {
logger.debug("###INDEX PAGE###");
String rtnPage = "index";
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
logger.info(ipAddress + " : " + rtnPage);
return rtnPage;
}
| cs |
7. 서버를 실행하고 http://localhost:8080/web에 접속하면, 완전히 무너져있는 것을 볼 수 있습니다.
8. index.jsp 파일에서 불러오는 리소스 파일의 경로들을 아래의 코드처럼 상대경로로 변경합니다.
- before
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
| cs |
- after
<link href="../resources/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
| cs |
모두 변경했다면, 새로고침 혹은 Ctrl+Shift+R 후에 테마가 적용된 것을 확인할 수 있습니다.
Spring 개발환경 설정하기(1) - 프로젝트 생성하기~톰캣 설정
Spring 개발환경 설정하기(2) - 라이브러리 다운로드~DB연동
Spring 개발환경 설정하기(3) - Spring+MyBatis 연동하기
오늘은 Spring 개발환경 설정하기 포스팅을 마무리 지으려고 합니다.
XML을 이용하여 간단한 SQL문을 작성하고, DAO에서 이를 호출하는 방식을 사용합니다.
1. src/main/resources에 mappers 폴더를 생성하고, timeMapper.xml 파일을 만듭니다.
2. timeMapper.xml에 DTD를 추가하고 SQL문을 작성합니다.
테스트 목적으로 만드는 Mapper이기 때문에 간단하게 현재 날짜와 시간을 출력하는 SQL문을 사용합니다.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | cs |
<mapper namespace="com.lsy0318.mapper.TimeMapper"> <select id="getTime" resultType="java.lang.String"> select sysdate() </select> </mapper> | cs |
XML Mapper에서
namespace는 mapper들을 구분하는 식별자로 매우 중요합니다.
클래스에서는 패키지와 같은 역할로
MyBatis 내에서 원하는 SQL문을 찾아서 실행할 때 동작합니다.
위의 코드는
com.lsy0318.mapper.TimeMapper 네임스페이스에서
getTime 매핑 구문을 정의하고 있습니다.
이는 DAO에서
com.lsy0318.mapper.TimeMapper.getTime 형태로 실제 명시하게 됩니다.
3. root-context.xml의 sqlSessionFactory bean에 아래의 코드를 추가합니다.
<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property> | cs |
mappers 폴더 내부에 있는, 파일의 이름이 Mapper.xml로 끝나는 파일을 자동으로 인식하도록 설정해주는 코드입니다.
4. src/main/java 폴더에 persistence 패키지를 생성하고 TimeDAO 인터페이스를 만듭니다.
public interface TimeDAO { public String getTime(); } | cs |
5. TimeDAO의 구현 클래스로 TimeDAOImpl 클래스를 만듭니다.
@Repository public class TimeDAOImpl implements TimeDAO { @Inject private SqlSession sqlSession; private static final String NAMESPACE = "com.lsy0318.mapper.TimeMapper."; @Override public String getTime() { return sqlSession.selectOne(NAMESPACE + "getTime"); } } | cs |
@Repository는 특정 클래스를 DAO로 표시하여 해당 역할을 명확히 해주는 주석입니다.
6. persistence 패키지를 Spring에 bean으로 등록합니다.
root-context.xml에 아래의 코드를 추가하면 Spring에서 persistence 패키지를 스캔하게 됩니다 :)
<context:component-scan base-package="com.lsy0318.persistence" /> | cs |
7. src/test/java 폴더에 있는 패키지에 TimeDAOTester 클래스를 만듭니다.
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/root-context.xml" }) public class TimeDAOTester { @Inject private TimeDAO dao; @Test public void testTime() throws Exception{ System.out.println(dao.getTime()); } } | cs |
JUnit Test를 실행하면 콘솔에 현재 날짜와 시간이 출력됩니다.
8. 기존의 컨트롤러를 이용하여 웹 화면에서 호출해봅니다.
@Controller public class HomeController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @Inject private TimeDAO dao; @GetMapping("/") public String home(Model model) { logger.info("Welcome home!"); model.addAttribute("serverTime", dao.getTime()); return "home"; } } | cs |
서버를 켜고 http://localhost:8080/web에 접속하면 현재 날짜와 시간이 출력됩니다.
Spring 개발환경 설정하기(1) - 프로젝트 생성하기~톰캣 설정
Spring 개발환경 설정하기(2) - 라이브러리 다운로드~DB연동
오늘은 Spring에 MyBatis를 연결하는 방법에 대해 포스팅 할 계획입니다.
Spring + MyBatis + MySQL의 설정에 대한 내용을 담고 있습니다.
참조한 공식 문서는 아래 링크와 같습니다 :)
http://www.mybatis.org/spring/ko/getting-started.html
1. 팩토리 빈을 생성하기 위해 root-context.xml에 아래 코드를 추가합니다.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> </bean> | cs |
2. src/main/resources에 mybatis-config.xml 파일을 생성해주세요.
3. mybatis-config.xml 파일의 내용을 아래 코드로 수정해주세요.
http://www.mybatis.org/mybatis-3/ko/getting-started.html
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>
</configuration> | cs |
4. 1번의 코드를 아래와 같이 수정해주세요.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:/mybatis-config.xml"></property> </bean> | cs |
이제 Spring이 동작할 때 mybatis-config.xml이 함께 동작하게 됩니다 :)
5. src/test/java폴더에 MyBatisTester 클래스를 만들어주세요.
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/root-context.xml" }) public class MyBatisTester { @Inject private SqlSessionFactory sqlSessionFactory;
@Test public void myBatisTest() throws Exception { System.out.println(sqlSessionFactory); }
@Test public void sessionTest() throws Exception { try (SqlSession session = sqlSessionFactory.openSession()) { System.out.println(session); } catch (Exception e) { e.printStackTrace(); } } } | cs |
org.apache.ibatis.session.defaults.DefaultSqlSession... 메시지가 보여지면 성공입니다.
이제 Spring + MyBatis + MySQL의 연결까지 끝났습니다.
6. SqlSessionTemplate을 설정해주세요. root-context.xml에 아래의 코드를 추가하면 됩니다.
http://www.mybatis.org/spring/ko/sqlsession.html
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> | cs |
SqlSessionTemplate를 설정하면 간단하게는 자동으로 session을 자동으로 열고 닫아주고,
쓰레드 처리의 안정성, 트랜잭션의 관리를 보장해주고, 여러 DAO와 매퍼에서 공유할 수 있습니다.
DB로 오라클을 사용하는 경우에는 pom.xml에 추가해야 하는 코드가 있습니다.
1. ojdbc6 라이브러리를 추가해주세요.
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency> | cs |
2. </build> 와 </project> 사이에 아래의 코드를 추가해주세요.
<repositories> <repository> <id>codelds</id> <url>https://code.lds.org/nexus/content/groups/main-repo</url> </repository> </repositories> | cs |
3. root-context.xml에 아래의 코드를 추가하면 DB와 연결이 됩니다.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"> </property> <property name="username" value="{아이디}"></property> <property name="password" value="{비밀번호}"></property> </bean> | cs |
Spring 개발환경 설정하기 (1) - 프로젝트 생성하기
오늘은 앞으로 사용할 라이브러리들을 추가하고, DB연동까지 포스팅 하겠습니다.
1. Spring 프레임워크의 버전을 변경합니다.
Spring 프로젝트를 생성하면 자동으로 라이브러리가 받아지는데요.
기본 Spring 프레임워크 버전이 너무 낮기 때문에 따로 설정이 필요합니다.
※2017년 1월 공식 버전은 4.3.6 버전입니다. (http://projects.spring.io/spring-framework/)
pom.xml에서 3.1.1.을
4.3.6.으로 수정합니다.
<properties> <java-version>1.6</java-version> <org.springframework-version>3.1.1.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties> | cs |
수정하면 자동으로 Spring 4.3.6 버전의 라이브러리가 다운로드 됩니다.
다운로드가 완료된 후에는 반드시 다시 한번 서버가 정상적으로 실행되는지 확인해주세요.
2. 프로젝트의 Java 버전을 1.8로 변경합니다.
프로젝트 우클릭 -
Properties -
ProjectFacets에서
Java 버전을 1.6 -> 1.8로 바꾼 후에
Apply 하고
Java Compiler도 1.8버전인지 확인해주세요.
3. JDBC, Test 라이브러리를 추가합니다.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> | cs |
pom.xml에 위의 코드를 찾아 복붙한 후에 webmvc 부분을 각각 jdbc, test로 수정하면 됩니다 :)
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency> | cs |
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> </dependency> | cs |
4. Mybatis, Mybatis-Spring 라이브러리를 추가합니다.
https://mvnrepository.com/artifact/org.mybatis/mybatis
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> | cs |
https://mvnrepository.com/artifact/org.mybatis/mybatis-spring
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> | cs |
5. MySQL 라이브러리를 추가합니다.
https://mvnrepository.com/artifact/mysql/mysql-connector-java
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.5</version> </dependency> | cs |
6. 기존의 JUnit 4.7버전을 4.12버전으로 수정합니다.
기존에 있는 JUnit dependency는 지우고
추가하시면 됩니다.
https://mvnrepository.com/artifact/junit/junit
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> | cs |
라이브러리를 추가한 후에는 꼭 서버가 실행되는지 확인해주세요!
7. root-context.xml에 네임스페이스를 추가해주세요.
src/main/webapp/WEB-INF/spring 폴더의 root-context.xml 파일입니다.
하단의 NameSpaces 탭에 들어가서
aop, context, jdbc, mybatis-spring을 체크해주세요.
8. src/test/java 폴더 안의 패키지에 DBTester 클래스를 만듭니다.
클래스 위에 아래의 코드를 넣어주세요.
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/root-context.xml"}) | cs |
테스트 코드를 넣고 JUnit Test를 실행했을 때 성공하면 됩니다.
@Test public void testDBConnection() throws Exception { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/{스키마명}?useSSL=false&serverTimezone=Asia/Seoul",
"{아이디}", "{비밀번호}"); System.out.println(con); con.close(); } | cs |
9. Spring에 DB를 연결합니다.
root-context.xml에 아래의 코드를 추가합니다.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost/{스키마명}?useSSL=false&serverTimezone=Asia/Seoul">
</property> <property name="username" value="{아이디}"></property> <property name="password" value="{비밀번호}"></property> </bean> | cs |
※위 코드에서 false&와 server 사이에 amp;를 꼭 추가해주세요!!!
10. DBTester 클래스에서 DB와의 연결이 되었는지 확인합니다.
DataSource와 Connection를 import할 때 경로가 javax.sql인걸 유의해주세요 :)
@Inject private DataSource ds; @Test public void testDS() throws Exception{ Connection con = ds.getConnection(); System.out.println(con); con.close(); } | cs |
※해당 포스팅은 Spring 개발 환경을 설정하는 방법에 대해 설명하고 있습니다.
작성자는 이클립스 + STS 플러그인 + 톰캣 서버를 사용합니다.
DB는 MySQL을 사용할 계획입니다.
1. File - New - Spring Legacy Project - Spring MVC Project 선택
프로젝트 이름은 임의로 springEx로 할게요 :)
처음으로 스프링 프로젝트를 만들게 되면 다운로드를 받아줘야 합니다~ (금방 끝나요)
2. 패키지명을 지정해주고 Finish를 눌러주세요.
여기까지 완료되면 Spring에서 필요한 라이브러리들이 다운로드 됩니다.
만들어진 프로젝트 모습
3. Servers 탭의 No servers... 클릭해주세요.
저는 톰캣 9버전을 사용중입니다. 사용할 톰캣 버전을 선택하고
Next 클릭
조금 전에 생성한 springEx 프로젝트를 선택하고
Add 클릭해주세요.
처음으로 톰캣 서버를 올리는 경우에는 파일을 다운로드 하게 됩니다. 시간이 약간 소요됩니다.
4. 서버를 실행해주세요.
실행 후에 http://localhost:8080/web/으로 접속했을 때
Hello world!가 나오면 됩니다.
안녕하세요, 단색화입니다.
저는 이클립스에 STS 플러그인을 설치해서 사용하고 있는데요~
오늘은 기존의 이클립스에 STS 플러그인 설치 방법에 대해서 포스팅 하려고 합니다 :)
1. 스프링 홈페이지(
https://spring.io/)로 접속해주세요.
홈페이지 하단에 TOOLS - See all versions 로 들어가서
Update Site Archives 하단에 있는 목록에서 자신이 사용하고 있는 이클립스 버전에 맞는 zip파일을 다운받아주세요.(
http://spring.io/tools/sts/all)
2. 이클립스 상단 메뉴 Help - Install New Software... - Add... - Archive... - 다운받은 zip파일을 선택 - OK
3. 필요한 것들 체크해주시고 Next
4. Next
5. 긍정적으로 체크해주시고, Finish 눌러주세요.
6. 설치중이고 생각보다 금방 끝났습니다 :)
7. 완료되면 재시작 해주세요.
8. 이클립스 우측 상단의

버튼을 눌러서 Spring을 선택해주세요.
이후에는 편하게 스프링 프로젝트를 만들 수 있게 됩니다 :)