개키우는개발자 : )

프로젝트 시작하기 본문

JAVA/Spring Framework

프로젝트 시작하기

DOGvelopers 2019. 1. 30. 16:40
반응형

Spring Framework 프로젝트 시작하기

학습 목표


  • STS 소개 및 제공하는 기
  • Spring Project 작성하기
  • Maven과 Library 관리


다른 분이 정리를 잘해놔서 sts 설치 방법 보시고 설치하시면 됩니다 = https://backback.tistory.com/56



1.STS 소개 및 제공하는 기능



1-1 STS(SpringSource Tool Suite) 소개


Spring 개발업체인 SpringSource가 직접 만들어 제공하는 이클립스 확장판으로 최신 이클립스를 기반으로 주요한 Spring지원 플러그인과 관련된 도구를 모아서 Spring 개발에 최적화 되도록 만들어진 IDE이다.



1-2 STS가 제공하는 기능


- Bean 클래스 이름 자도완성 : 현재 프로젝트의 모든 Source와 라이브러리, JDK안의 모든 클래스 중에서 첫글자가 SD로 시작하는 클래스를 자동으로 보여줌


STS 자동완성 이미지STS 자동완성 이미지



- 설정파일(XML) 생성 위저드 : Bean 설정파일 생성 위저드 중 사용할 Namespace와 Schema 버전을 선택하는 화면


XML Namespace 이미지XML Namespace 이미지


- Bean 의존관계 그래프 : Spring IDE는 XML 설정파일을 읽어서 자동으로 그래프를 그려줌, 각 Bean이 어떻게 참조되고, 어떤 Property를 갖는지 알 수 있음 (의존관계를 그래프형태로 확인할 수 있음)


bean 그래프 이미지bean 그래프 이미지


- AOP 적용 대상 표시 : Spring IDE는 XML 설정파일 편집기를 이용하면 AOP의 적용 대상을 손쉽게 확인할 수 있다.


1
2
3
4
5
6
7
<bean id="performancdTraceAdvice" class="myspring.aop.xml.PreformanceTraceAdvice" />
 
<aop:config>
    <aop:aspect id="traceAspect" ref="performancdTraceAdvice">
        <aop:around pointcut="execution(public * myspring.user.service..*(..))" method="trace" />
    </aop:aspect>
</aop:config>
cs



2. Spring Project 생성 및 Spring Module 설치.



2-1 Spring Project 생성 


eclipse 상단 메뉴에서 File - > New - Other -> 검색창에 spring ->Spring Legacy Project 
-> Simple Spring Maven -> project name 입력 하시면 생성됩니다.




3.Maven과 Library 관리



3-1 Maven이란?


라이브러리 관리 + 빌드 툴

https://mvnrepository.com/


3-2 Maven을 사용하는 이유


- 편리한 Dependent Library 관리 - Dependency Management


- 여러 프로젝트에서 프로젝트 정보나 jar파일들을 공유하기 쉬움


- 모든 프로젝트의 빌드 프로세스를 일관되게 가져갈 수 있음


3-3 pom.xml


-Maven 프로젝트를 생성하면 pom.xml 파일이 생성된다.


-pom.xml 파일을 Project Object Model 정보를 담고 있다.


예제 프로젝트 pom.xml 코드입니다.


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.springframework.samples</groupId>
    <artifactId>SpringPjt</artifactId>
    <version>0.0.1-SNAPSHOT</version>
 
    <properties>
 
        <!-- Generic properties -->
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
        <!-- Spring -->
        <spring-framework.version>3.2.3.RELEASE</spring-framework.version>
 
        <!-- Logging -->
        <logback.version>1.0.13</logback.version>
        <slf4j.version>1.7.5</slf4j.version>
 
        <!-- Test -->
        <junit.version>4.12</junit.version>
 
    </properties>
    <dependencies>
 
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
 
        <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.2</version>
        </dependency>
 
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.12</version>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
 
 
 
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
 
        <!-- Spring and Transactions -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
 
        <!-- Logging with SLF4J & LogBack -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <scope>runtime</scope>
        </dependency>
 
 
        <!-- Test Artifacts -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
 
    </dependencies>
</project>
 
cs


3-3 pom.xml 의 의존관계(dependency)추가 = library


Spring 프레임워크 설치


-https://mvnrepository.com/ 에 접속한다.


-org.springframework 로 검색


-spirng-jdbc 모듈과 spring-web 모듈을 pom.xml 에 추가한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>
 
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.2.17.RELEASE</version>
</dependency>
 
cs


-pom.xml 에서 Dependencies/Dependency Hierarchy 클릭하면 설치된 Library 를 볼수있습니다.


pom.xml dependencies 이미지pom.xml dependencies 이미지



dependencies 이미지dependencies 이미지



스프링 샘플 프로젝트를 진행하며 정리한 내용입니다.



완성된 프로젝트 코드를 다운받으실수 있습니다.

https://dog-developers.tistory.com/30



반응형

'JAVA > Spring Framework' 카테고리의 다른 글

DI 애플리케이션 작성(1)  (0) 2019.02.06
IoC 컨테이너와 DI(Dependency Injection)  (2) 2019.02.06
Spring Framework 의 개요  (0) 2019.01.30
Basic Framework 개념(3)  (0) 2019.01.30
Basic Framework 개념(2)  (0) 2019.01.30
Comments