스프링 프레임워크 세팅2

2022. 1. 13. 12:19Framework

반응형

apache maven

POM(project object model) xml문서를 통해
프로젝트의 버전 정보 및 플러그인 구성, 라이브러리를 통합하여 관리하는 프레임워크

 


pom.xml의 dependencies태그 안에 라이브러리 관리


https://mvnrepository.com/ 라이브러리 제공

 



mvn 레파지토리사이트에서 ojdbc6 검색
maven 디펜던시 복붙
아래 note라는 내용이 있을 경우 기본저장소에 제공되어있지 않아
별도의 사설저장소에 제공되고있다는 뜻.



프로퍼티스 구문과 디펜던시 구문 사이에
레파지토리 구문을 추가
기본 저장소에 다운받지 못하는 경우 사설 저장소를 등록하는 것
ojdbc6는 따로 사설 저장소 등록 필요
<id>엘리먼트와 <url>엘리먼트를 작성
아이디태그에는 노트구문에 버튼처럼 작성된 단어 복붙
url태그에는 노트구문에 작성된 http://~~ 복붙



spring에서 jdbc기능을 사용하기 위해 필요한 라이브러리
어떤걸 다운받아야할 지 모를 땐 useage가 높은 걸로.
하단에 노트구문이 따로 없을 땐 디펜던시 태그부분만 복붙하면 끝
spring-jdbc 검색

순수 마이바티스 라이브러리
mybatis검색
먼저 마이바티스 스프링 말고 그냥 마이바티스로 복붙

스프링과 연동시키기위한 마이바티스 스프링 라이브러리
추가해야하는데 그건 mybatis-spring으로 복붙

커넥션 풀을 사용하기 위한 라이브러리
한번 생성된 커넥션객체를 담아둘 수 있는 영역으로
매번 재사용할 수 있는 것이 커넥션 풀.
commons-dbcp으로 복붙

 

 

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/maven-v4_0_0.xsd">
	
	<!-- 
		* pom.xml 구조
		project{프로젝트정보 + properties + [repositories] + dependencies + build}
	 -->
	
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.gy</groupId>
	<artifactId>spring</artifactId>
	<name>springProject</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	
	<properties>
		<java-version>1.8</java-version>
		<org.springframework-version>5.3.14</org.springframework-version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>
	
	<!-- repositories: 기본저장소에서 다운받지 못하는 경우 사설 저장소를 등록 -->
	<repositories>
      <repository>
         <id>Datanucleus</id>
         <url>http://www.datanucleus.org/downloads/maven2/</url>
      </repository>
   </repositories>

	<!-- dependencies: 다운받으려는 라이브러리를 작성 -->
	<dependencies>
		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				 </exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
				
		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>	
		
		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j-version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>
				
		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	
		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.7</version>
			<scope>test</scope>
		</dependency> 
		
		<!-- DB관련(오라클, 마이바티스 등) 라이브러리들 -->
		<!-- https://mvnrepository.com/artifact/oracle/ojdbc6 -->
		<dependency>
          <groupId>oracle</groupId>
          <artifactId>ojdbc6</artifactId>
          <version>11.2.0.3</version>
      </dependency>
		
		<!-- 스프링에서 JDBC기능을 사용하기 위한 라이브러리 -->
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-jdbc</artifactId>
		    <version>${org.springframework-version}</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.5.7</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/commons-dbcp/commons-dbcp -->
		<dependency>
		    <groupId>commons-dbcp</groupId>
		    <artifactId>commons-dbcp</artifactId>
		    <version>1.4</version>
		</dependency>
		
		
	</dependencies>
	
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 



메이븐 디펜던시즈에 기본적으로 다운되어있는 jstl
다운되어있어도 구동이 잘 안되기 때문에
webapp/web-inf/lib폴더를 생성해서
taglib라이브러리 4개를 직접 추가해야 함

 



매번 xml을 작성할 때 dtd 유효성검사를 위한 구문을
공식문서에 복붙해야했음. xml파일 생성과 동시에 구문 추가되는 법
preferences-xml-xml catalog에서 user specified entries에 add
location에는 공식문서에 http://~~ url주소를 쌍따옴표 빼고 복붙
key에는 public 옆에 쌍따옴표 빼고 복붙



mapper관련된 dtd도 마찬가지로 똑같이 수행

 

 



Spring Framework


동적인 웹 사이트를 개발하기 위한 서비스를 제공
한국 공공기관의 웹 서비스 개발 시 권장하는
전자정부 표준프레임워크로 지정되어있다

특징

IOC, DI가 제일 중요한 특징
IOC(Inversion of Control) 제어반전
주도권은 프레임워크가 쥐고있고 개발자는 프레임워크에 맞게 개발
new 키워드를 통해 객체를 생성하고 직접 호출하는 것이 아닌
객체를 알아서 생성하고 필요할때마다 주입해서 개발자에게 제공

Di(Dependency Injection) 의존성 주입
라이브러리를 직접 다운할 필요없이 디펜던시구문하나로 알아서 추가
컨트롤의 제어권을 스프링에게 주는 것은
mxl파일이나 어노테이션을 통해서 등록.

POJO(Plain Old Java Object)
vo클래스를 POJO라고 함.
다른 프레임워크는 직접적으로 만든 클래스 사용불가
스프링에선 직접적으로 만든 일반 클래스 사용가능(=기존 라이브러리 지원 용이)

spring AOP(Aspect Oriented Programming)
자바 프로그래밍 언어의 특징은 oop 객체지향언어프로그래밍
스프링프레임워크는 aop 관점지향프로그래밍
트랙잭션, 로깅(출력문), 보안 등 반복적, 공통적 코드 모듈화하여 관리

spring jdbc
crud관련해서는 마이바티스 같은 영속성 프레임워크와 연결해야하는데 그 인터페이스를 제공하는 것.

spring mvc
mvc를 개발자가 직접 관리하지 않고 스프링이 관리.

PSA(Portable Service Abstraction)
스프링프레임워크에서 다양한 모듈을 연동해서 사용가능
그 모듈을 연동할 때마다 그 모듈에 맞게 코드 수정할 필요없이
추상화레이어라는 것이 존재하기 때문에 쉽게 모듈을 바꿔 사용 가능

반응형