2020. 8. 20. 02:22ㆍSpring/Spring
1. Tomcat 설치
1) 설치 방법
홈페이지(http://tomcat.apache.org/) 수동 다운로드 방식과 Homebrew를 이용한 다운 방식이 있다. 지원하는 Java 버전을 고려하여 Tomcat 버전을 선택하여 다운받도록 한다.
// brew 업데이트
brew update
// Tomcat 버전 확인
brew search tomcat
// 'tomcat'은 가장 최신버전으로 설치
brew install tomcat@8
// 정상적인 설치 확인
brew list
※ brew로 설치한 내용은 /usr/local/Cellar 폴더 하위에 설치된다.
2) 압축 해제 및 권한 설정
다운받은 압축파일은 바탕화면에 있다고 가정한다.
// 직접 다운받을 경우
sudo mv ~/Desktop/apache-tomcat-8.5.57 /usr/local/Cellar
sudo ln -s /usr/local/Cellar/apache-tomcat-8.5.57 /Library/Tomcat
sudo chown -R <맥북 사용자 ID> /Library/Tomcat
sudo chmod +x /Library/Tomcat/bin/*.sh
// brew로 다운받을 경우
sudo ln -s /usr/local/Cellar/tomcat@8/8.5.57/libexec /Library/Tomcat
sudo chown -R <맥북 사용자 ID> /Library/Tomcat
sudo chmod +x /Library/Tomcat/bin/*.sh
3) 실행 및 종료
Tomcat 실행 후 localhost:8080 으로 접속하면 톰캣 화면이 나온다.
sudo /Library/Tomcat/bin/startup.sh
sudo /Library/Tomcat/bin/shutdown.sh
2. MySQL
1) 설치 방법
홈페이지(https://www.mysql.com/) 수동 다운로드 방식과 Homebrew를 이용한 다운 방식이 있다. 수동으로 다운받는 방법은 홈페이지의 DOWNLOAD 탭 - MySQL Community Downloads로 접속하여 설치를 진행한다.
// MySQL 버전 확인
brew search mysql
// 'mysql'은 가장 최신버전으로 설치
brew install mysql
// 정상적인 설치 확인
brew list
2) MySQL 설정
// MySQL 서버 가동
mysql.server start
// MySQL 비밀번호 설정
mysql_secure_installation
질문 | 답변 | 설명 |
Would you like to setup VALIDATE PASSWORD component? | Y / N | 비밀번호 복잡도 설정 |
Remove anonymous users? | Y / N | Y 일 경우 mysql -u[사용자] -p[비번] N 일 경우 mysql 로만 접속 |
Disallow root login remotely? | Y / N | localhost를 제외한 다른 IP에서의 원격 접속 허용 유무 |
Remove test database and access to it? | Y / N | MySQL의 Test DB 삭제 유무 |
Reload privilege tables now? | Y / N | 설정한 내용을 적용할 것인지에 대한 질문이기에 'Y'로 지정 |
mysql_secure_installation의 비밀번호 복잡도 설정을 변경은 MySQL 로그인 후 설정을 변경해준다.
// 확인
SHOW VARIABLES LIKE 'validate_password%';
// 복잡도 변경
SET GLOBAL validate_password.policy=LOW;
// 재설정
mysql_secure_installation
3) Java MySQL JDBC 연동
자바에서 데이터베이스를 연결하기 위해서는 JDBC가 필요하다. MySQL 데이터베이스를 Java에서 사용하기 위해 MySQL Connector를 설치한다(https://dev.mysql.com/downloads/connector/j/). ('Looking for the latest GA version?' 문구 - Tar 파일 다운 - 원하는 파일 위치에 압축 해제 /usr/local/Cellar/)
3. SpringMVC 프로젝트 생성
1) 프로젝트 생성
2) SpringMVC 적용
3) 라이브러리 추가 ver1 (pom.xml)
라이브러리를 추가할 때, Add Framework Support을 통해 Spring MVC를 다운받는 버전으로 통일화해주는게 좋다. (<org.springframework-version>5.2.3.RELEASE</org.springframework-version>)
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.2.3.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<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>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<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.17</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>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</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>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
</plugins>
</build>
4) 라이브러리 추가 ver2 (pom.xml)
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.2.3.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<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>aspectjweaver</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.17</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>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</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.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<scope>provided</scope>
</dependency>
<!-- JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- DBCP -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- Jackson2 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<!-- JPA, 하이버네이트 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.20.Final</version>
</dependency>
<!-- JPA Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
</plugins>
</build>
</project>
maven-compiler-plugin 에러가 날 경우 Tomcat 서버나 프로젝트를 새로 만드는 것을 권장한다. 그럼에도 불구하고 동작하지 않는다면 StackOverflow의 내용을 참고하여 해결을 할 수 있다.
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.2.8.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
<!-- org.apache.maven.plugins
maven-compiler-plugin 오류 해결 -->
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
...
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
5) MySQL JDBC 적용
Preference Structure (Command + ;)
※ Finder에서 Command + Shift + g 단축키로 원하는 경로로 이동할 수 있다.
6) MySQL 연동
연동하기 전에 미리 MySQL 서버를 가동한다. 이 후 Test Connection을 통해 생기는 오류를 해결(ServerTimeZone - UTC)하고 연결을 확인한다.
연결 확인을 위한 테스트 클래스 생성 후 결과를 확인한다.
package com.springstudy.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBCTest {
public static void main(String[] args) {
Connection con = null;
String server = "localhost"; // MySQL 서버 주소
String database = ""; // MySQL DATABASE 이름
String user_name = "root"; // MySQL 서버 아이디
String password = ""; // MySQL 서버 비밀번호
// 1.드라이버 로딩
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.err.println(" !! <JDBC 오류> Driver load 오류: " + e.getMessage());
e.printStackTrace();
}
// 2.연결
try {
con = DriverManager.getConnection("jdbc:mysql://" + server + "/" + database + "?useSSL=false", user_name, password);
System.out.println("정상적으로 연결되었습니다.");
} catch(SQLException e) {
System.err.println("con 오류:" + e.getMessage());
e.printStackTrace();
}
// 3.해제
try {
if(con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
7) 라이브러리 적용
Preference Structure (Command + ;)
8) Tomcat 적용
사용하고자 하는 Tomcat 버전을 추가하여 설정한다. (초기 설정 부분은 하단 'IntellJ 초기 설정' 참고)
9) log4j.xml
/src/main/resources/log4j.xml 파일을 생성하고 수정해준다.
<?mappers version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration>
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="Controller">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
4. IntelliJ 초기 설정
1) 초기 Server 설정
Preference - Application Servers - Tomcat - 파일 위치 설정 (직접 다운받았을 경로와 brew로 다운받은 경로가 다르니 주의해야한다.)
[참고] https://velog.io/@max9106/Mac-apache-tomcat%ED%86%B0%EC%BA%A3-%EC%84%A4%EC%B9%98-l0k4zt4f3c
[참고] https://mommoo.tistory.com/89
[참고] https://dog-developers.tistory.com/20
[참고] https://baekjungho.github.io/springboot-intellijconnect/
[참고] https://k39335.tistory.com/70
[참고] https://goddaehee.tistory.com/247
[참고] https://m.blog.naver.com/1ilsang/221314109439
'Spring > Spring' 카테고리의 다른 글
[Spring] AWS 배포 (0) | 2020.08.23 |
---|---|
[Spring] 간단한 API 제작 (0) | 2020.08.20 |
[Spring] 어노테이션 기반 프로젝트 진행 순서 (0) | 2020.08.13 |
[Spring] XML 기반 프로젝트 진행 과정 (0) | 2020.08.13 |