본문 바로가기
공부/Java

Spring 이해

by 726582776982 2022. 5. 10.
annotation
@Service --> service 객체 최상위 클래스를 추상인터페이스 아래서 서비스에 자동으로 주입하는 기능
@AutoWired --> 추상인터페이스 아래서 서비스에 자동으로 주입하는 기능
@Repository --> Databases 와 연결된 DAO 를 자동으로 연결하는 기능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//** interface 자동완성 
//=> Alt + Shift + T  
//=> 또는 마우스우클릭 PopUp Menu 의  Refactor - Extract Interface...
@Service
public class MemberServiceImpl implements MemberService {
    // ** Mybatis interface 방식 적용
    // => MemberMapper 의 인스턴스를 스프링이 생성해주고 이를 주입받아 실행함
    //    단, 설정화일에 <mybatis-spring:scan base-package="mapperInterface"/> 반드시 추가해야함
    //    MemberDAO => mapperInterface 사용으로 MemberMapper 가 역할 대신함
    @Autowired
    MemberMapper mapper;
    //MemberDAO dao = new MemberDAO(); -> MyBatis 적용 전 
    
    @Override
    public List<MemberVO> selectList() {
        return mapper.selectList();
    }
cs
Pojo - plain old java object
= 의존성 주입
= 관점 지향 프로그래밍
 
Spring 설정
Spring Legacy Project - template(Spring MVC Project) - con.ncs.green
프로젝트 우클릭 properties - project facets - Java 의 버전 1.8로 변경
runtimes - Server Apache Tomcat 9.0 선택
applyMaven Dependencies
dependencypom.xml 수정
properties - javaversion 1.8로수정
SpringFramework 수정 5.2.4.RELEASE
Maven 저장소 페이지 가서 Mysql Connector 8.0.16 다운로드프로젝트 실행
 
 
다른 프로젝트(다른환경) 으로 배포하는방법
해당하는 프로젝트를 export - AntBuild
project dir  -> build.xml 생성
해당하는 위치와 패키지들이 맞는지 확인 - Target
먼저 기본적으로 생성되어있는지, 중복되지않기 위해 delete
.class 파일들을 jar파일로 묶어줌
jar파일 묶어주는 대상 fileset
포함하는 파일들 include
제외하는 파일들 exclude
 
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
<project basedir="." default="jarfile" name="myMember">
    <property name="name" value="myMember"/>
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="bin"/>
    <property name="dist.dir" value="dist"/>
    <property name="copy.dir" value="C:\\Mtest"/>
<!-- target:
        하나의 프로젝트에 여러 target이 있을 수 있고 
        다른 타겟과 의존성을 가질 수 있다.
        타깃 간의 의존 관계는 target 요소의 depends 속성으로 기술
        name="타겟이름_필수" ... project Tag의 default 속성에 지정될 수 있음 
        description="타겟설명_필수요소아님"     -->    
    <target name="jarfile" description="Only Generate a jar file">
        <!-- delete:
            하나의 파일 또는 디렉토리와 그 하위 디렉토리,
            file 속성에 지정된 파일 (동명 화일이 있으면) 삭제 
            file="dist/myMember.jar" -->
        <delete file="${dist.dir}/${name}.jar" />
        
        <!-- jar파일생성
            지정된 파일들을 jar로 묶어줌 -->    
        <jar destfile="${dist.dir}/${name}.jar">
            <!--  class 파일 포함 & 제외 -->
            <fileset dir="${build.dir}">
                <include name="com/**/*.*" />
                <!-- 빌드시 제외대상 -->
                <exclude name="com/ncs/green/test/*.*" />
            </fileset>
            <!-- java 소스파일 포함 & 제외 -->
            <fileset dir="${src.dir}">
                <include name="com/**/*.*"/>
                <!-- 빌드시 제외대상 -->
                <exclude name="com/ncs/green/test/*.*"/>
            </fileset>
        </jar>
        
        <!-- 생성된 jar 화일을 드라이브에 복사해서 하나 더 만들어주기 위해 
            먼저 동일 화일명이  있으면 삭제 하기위해 -->
        <delete file="${copy.dir}/${name}.jar"/>
        <!-- jar파일복사 -->
        <copy todir="${copy.dir}" file="${dist.dir}/${name}.jar" />
cs
Buildfile: C:\Mtest\Mywork\AntBuild\build.xml
jarfile:
      [jar] Building jar: C:\Mtest\Mywork\AntBuild\dist\myMember.jar
    [copy] Copying 1 file to C:\Mtest
BUILD SUCCESSFUL
Total time: 355 milliseconds
 
적용방법
적용하고싶은 프로젝트 우클릭
build path - configure build path - 외부파일(external) add JARs - export된 파일 copy본을 선택
references Libraies 에서 적용되었는지 확인

원하는 파일을 export 하고 해당파일을 copy하는 방법 등을 확인.

 

'공부 > Java' 카테고리의 다른 글

배포  (0) 2022.06.02
Spring 개요 // Ioc DI(의존성 주입)  (0) 2022.05.29
공통모듈(DTO/VO - DAO - View - Service - Test)  (0) 2022.05.03
JDBC(Databases)//MySQL  (0) 2022.05.02
쓰레드(Thread) // 멀티쓰레드  (0) 2022.05.02