<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>aurevoir-jaeho.log</title>
        <link>https://velog.io/</link>
        <description>個人的な開発日誌記録用</description>
        <lastBuildDate>Sat, 24 Jun 2023 13:47:15 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>aurevoir-jaeho.log</title>
            <url>https://velog.velcdn.com/images/aurevoir-jaeho/profile/590658f6-9a3a-4d03-9399-d11926382220/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. aurevoir-jaeho.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/aurevoir-jaeho" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[SPRINGA] 회원가입]]></title>
            <link>https://velog.io/@aurevoir-jaeho/SPRINGA-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85</link>
            <guid>https://velog.io/@aurevoir-jaeho/SPRINGA-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85</guid>
            <pubDate>Sat, 24 Jun 2023 13:47:15 GMT</pubDate>
            <description><![CDATA[<h1 id="springa-회원가입-기능-구현하기">springA 회원가입 기능 구현하기</h1>
<br>

<hr>
<h2 id="1-회원가입-클릭시-회원가입-폼을-보여주기db연결x-계획">1. &lt;회원가입&gt; 클릭시 회원가입 폼을 보여주기(DB연결X) 계획</h2>
<blockquote>
<p>설계 순서</p>
</blockquote>
<ul>
<li>home.html</li>
<li>MemberController.java 클래스</li>
<li>memberView/join.html</li>
</ul>
<br>

<hr>
<h2 id="2-homehtml---controller">2. home.html &lt;-&gt; controller</h2>
<blockquote>
<p>home.html -&gt; 컨트롤러로 보내주는 href태그 추가</p>
</blockquote>
<pre><code class="language-html">&lt;p&gt;&lt;a href=&quot;member/join&quot;&gt;회원가입&lt;/a&gt;&lt;/p&gt;</code></pre>
<blockquote>
<p>@GetMapping 설계 
GET 요청을 처리하는 메서드로, 회원가입 폼으로 이동하는 역할 수행</p>
</blockquote>
<pre><code class="language-java">//회원가입 폼으로 이동
    @GetMapping(&quot;join&quot;)
    public String join() {
        return &quot;memberView/join&quot;;
    }</code></pre>
<blockquote>
<p>PostMapping 설계
POST 요청을 처리하는 메서드로, 회원가입 폼 작성 완료 후 입력값을 받아서 처리하는 역할 수행</p>
</blockquote>
<pre><code class="language-java">@PostMapping(&quot;join&quot;)
    public String join(Member member) {
        log.debug(&quot;입력받은 회원가입정보:{}&quot;, member);
        return &quot;redirect:/&quot;;
    }</code></pre>
<blockquote>
<p>Member 객체 설계
net.softsociety.springA.domain 패키지 내에 Member.java 설계
-&gt; 설계 시 sql 컬럼들과 맞추기 
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/b6d505fe-e0af-42ee-b6fa-a3b7a483ab45/image.png" alt=""></p>
</blockquote>
<pre><code class="language-java">package net.softsociety.springA.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Member {
    String memberid;
    String memberpw;
    String membername;
    String email;
    String phone;
    String address;
    boolean enabled;
    String rolename;
}

/*
 * @Data: Lombok 어노테이션으로, 게터/세터 메서드, toString(), equals(), hashCode() 등의 메서드를 자동으로 생성
 * @NoArgsConstructor: Lombok 어노테이션으로, 인자가 없는 기본 생성자를 자동으로 생성
 * @AllArgsConstructor: Lombok 어노테이션으로, 모든 필드를 인자로 받는 생성자를 자동으로 생성
 * String memberid: 회원의 ID를 저장하는 필드
 * String memberpw: 회원의 비밀번호를 저장하는 필드
 * String membername: 회원의 이름을 저장하는 필드
 * String email: 회원의 이메일을 저장하는 필드
 * String phone: 회원의 전화번호를 저장하는 필드
 * String address: 회원의 주소를 저장하는 필드
 * booelan enabled: 회원의 활성화 여부를 저장하는 필드
 * String rolename: 회원의 권한(롤)을 저장하는 필드
 */
</code></pre>
<blockquote>
<p>MemberController.java -&gt; Member객체 import하기
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/a30cc2b4-4d9a-4205-a18f-23cadcd00c77/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>template.memberView 패키지 생성하고 join.html 생성
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/6ecaff8d-8ff2-40e9-a572-a62a86d49bb6/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>join.html 설계</p>
</blockquote>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html xmlns:th=&quot;http://www.thymeleaf.org&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;[ 🐰🐭🐼 회원가입 🐼🐭🐰 ]&lt;/h1&gt;
&lt;form th:action=&quot;@{/member/join}&quot; method=&quot;post&quot;&gt;
    &lt;table border=&quot;1&quot;&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;ID&lt;/b&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;PASSWORD&lt;/b&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;NAME&lt;/b&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;E-MAIL&lt;/b&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;PHONE&lt;/b&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;ADDRESS&lt;/b&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<blockquote>
<p>template &lt;-&gt; controller 연동 확인 (DBx)
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/c798ff8d-99c3-4f87-8988-bdd603a69b67/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>나머지 폼 꾸미기</p>
</blockquote>
<ul>
<li>id -&gt; 텍스트타입, 플레이스홀더, 필수입력, 중복확인 버튼</li>
<li>pw -&gt; 플레이스홀더, 필수입력</li>
<li>name -&gt; 플레이스홀더, 필수입력</li>
<li>e-mail, phone, adderss -&gt; input태그, 플레이스홀더</li>
<li>가입 버튼(submit타입 input태그)</li>
<li>다시쓰기 버튼(reset타입 input태그)<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html xmlns:th=&quot;http://www.thymeleaf.org&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;[ 🐰🐭🐼 회원가입 🐼🐭🐰 ]&lt;/h1&gt;
&lt;form th:action=&quot;@{/member/join}&quot; method=&quot;post&quot;&gt;
  &lt;table border=&quot;1&quot;&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;b&gt;ID&lt;/b&gt;&lt;/td&gt;
          &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;memberid&quot; id=&quot;memberid&quot; placeholder=&quot;최소 5자 ID입력 필수&quot; required&gt;
              &lt;input type=&quot;submit&quot; value=&quot;ID중복확인&quot;&gt;
          &lt;/td&gt;    
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;b&gt;PASSWORD&lt;/b&gt;&lt;/td&gt;
          &lt;td&gt;
              &lt;input type=&quot;password&quot; name=&quot;memberpw&quot; id=&quot;memberpw&quot; placeholder=&quot;비밀번호 입력 필수&quot; required&gt;&lt;br&gt;
              &lt;input type=&quot;password&quot; name=&quot;memberpw2&quot; id=&quot;memberpw2&quot; placeholder=&quot;비밀번호 재입력&quot; required&gt;
          &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;b&gt;NAME&lt;/b&gt;&lt;/td&gt;
          &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;membername&quot; id=&quot;membername&quot; placeholder=&quot;이름 입력 필수&quot; required&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;b&gt;E-MAIL&lt;/b&gt;&lt;/td&gt;
          &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; placeholder=&quot;메일 입력&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;b&gt;PHONE&lt;/b&gt;&lt;/td&gt;
          &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;phone&quot; id=&quot;phone&quot; placeholder=&quot;전화번호 입력&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;b&gt;ADDRESS&lt;/b&gt;&lt;/td&gt;
          &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;address&quot; id=&quot;address&quot; placeholder=&quot;주소 입력&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td colspan=&quot;2&quot;&gt;
          &lt;input type=&quot;submit&quot; value=&quot;가입&quot;&gt;
          &lt;input type=&quot;reset&quot; value=&quot;다시 쓰기&quot;&gt;
          &lt;/td&gt;
      &lt;/tr&gt;
  &lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/f7869710-fe10-4d87-8b3e-e521c581356f/image.png" alt=""></li>
</ul>
<br>

<hr>
<h2 id="3">3.</h2>
<br>

<hr>
<h2 id="4">4.</h2>
<br>

<hr>
<h2 id="5">5.</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SPRINGA] 프로젝트 생성(회원제 게시판)]]></title>
            <link>https://velog.io/@aurevoir-jaeho/SPRINGA-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1%ED%9A%8C%EC%9B%90%EC%A0%9C-%EA%B2%8C%EC%8B%9C%ED%8C%90</link>
            <guid>https://velog.io/@aurevoir-jaeho/SPRINGA-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1%ED%9A%8C%EC%9B%90%EC%A0%9C-%EA%B2%8C%EC%8B%9C%ED%8C%90</guid>
            <pubDate>Sat, 24 Jun 2023 12:12:02 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/68726b44-53d0-456a-b151-5d9d31082c65/image.png" alt=""></p>
<h1 id="springa-프로젝트-생성">springA 프로젝트 생성</h1>
<blockquote>
<p>새프로젝트 : springA (회원제 게시판)
패키지 : net.softsociety.springA
하위 패키지 : controller, service, dao, domain, util, security
테이블 : 회원정보,  게시글, 리플(별도의 테이블 ; 정규화)</p>
</blockquote>
<br>

<hr>
<h2 id="1-springa-새-프로젝트-생성">1. springA 새 프로젝트 생성</h2>
<blockquote>
<p>Name : SpringA
Type : Gradle - Groovy
Packaging : Jar
Java Version : 8
Language : Java
Artifact : SpringA
Description : 회원제 게시판 연습
Package : net.softsociety.springA
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/3726c56f-bdef-421a-92db-78286dcd49d6/image.png" alt=""></p>
</blockquote>
<br>

<blockquote>
<p><strong>Project Dependency 설정</strong>
-&gt;
Lombok
MyBatis Framework
ORacle Driver
Spring Boot Devtools
Spring Security
Spring Web
Thymeleaf
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/65047896-d8ea-4b24-8c85-a4e67b130062/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>프로젝트 생성 완료
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/c021ddf3-ffac-4b1e-b141-78409067e557/image.png" alt=""></p>
</blockquote>
<br>

<hr>
<h2 id="2-oracle-sql-developer-테이블-생성">2. [Oracle SQL Developer] 테이블 생성</h2>
<blockquote>
<p>springA_sql.txt 파일 생성 후 테이블 설계</p>
</blockquote>
<pre><code class="language-txt">-- springA 예제 테이블

-- 회원정보
create table springA_member (
    memberid        varchar2(20)    primary key,    --사용자 식별 아이디
    memberpw        varchar2(100)    not null,        --비밀번호
    membername        varchar2(30)    not null,        --사용자 이름
    email            varchar2(50)            ,        --이메일
    phone            varchar2(30)            ,        --전화번호
    address            varchar2(200)            ,        --주소
    enabled            number(1) default 1 check (enabled in (0, 1)), --계정상태. 1-사용가능, 0-불가능
    rolename        varchar2(20) default &#39;ROLE_USER&#39; check (rolename in (&#39;ROLE_USER&#39;, &#39;ROLE_ADMIN&#39;))
);

insert into spring5_member (memberid, memberpw, membername, email, phone, address)
values (&#39;aaa&#39;, &#39;123&#39;, &#39;홍길동&#39;, &#39;aaa@aaa.com&#39;, &#39;010-1111-1111&#39;, &#39;서울시 강남구 삼성동&#39;);

-- 게시글

-- 게시글 번호 시퀀스

-- 리플

-- 리플 번호 시퀀스</code></pre>
<blockquote>
<p>Oracle SQL Developer 에서 테이블 설계 후 실행
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/6cbae111-7101-436c-ba95-50652c91b0b7/image.png" alt="">
hr계정 refresh 해서 테이블 구조 및 데이터 잘 들어왔는지 체크
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/28a5346a-4501-4310-82c9-cfa3d040da8e/image.png" alt="">
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/ec2a59b1-4369-4a0f-aea1-e7d043828d3f/image.png" alt=""></p>
</blockquote>
<blockquote>
<blockquote>
<p>새로운 SQL 워크시트 생성 단축키 :</p>
</blockquote>
</blockquote>
<pre><code>ALT + F10</code></pre><blockquote>
<blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/4d7b8272-78ee-4572-951a-6594ec4d272b/image.png" alt=""></p>
</blockquote>
</blockquote>
<br>

<hr>
<h2 id="3-application-properties-설정">3. application properties 설정</h2>
<blockquote>
<p>application.properties 설계
-&gt; 메모장파일로 항상 저장해두고 copy해 온뒤, 
port number, path, typwe-alias, mapper위치에 맞게 수정하기</p>
</blockquote>
<pre><code class="language-sql"># http://localhost:10288/springA

#접속 포트번호
server.port=10288

#Context Path
server.servlet.context-path=/springA

#Logback 사용. 전체를 대상으로 로깅 레벨 지정
#error&gt;warn&gt;info&gt;debug&gt;trace
logging.level.root=info

#특정 패키지를 대상으로 로깅 레벨 지정
logging.level.net.softsociety.springA=debug

# 오라클 연결 설정
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=hr
spring.datasource.password=hr 

# MyBatis type-alias 지정 패키지
mybatis.type-aliases-package=net.softsociety.springA.domain

# Mybatis mapper 위치 설정
mybatis.mapper-locations=mappers/**/*.xml</code></pre>
<br>

<hr>
<h2 id="4-하위패키지-설계">4. 하위패키지 설계</h2>
<blockquote>
<p>controller, service, dao, domain, util, security 설게
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/d3171375-92e4-4c4c-9a16-5964d851a3a0/image.png" alt="">
HomeController.java 설계</p>
<blockquote>
<p>Q. HomeController 역할
스프링 프레임워크는 MVC패턴을 사용하고 있고,
여기서 Controller는 화면(View)과 비즈니스 로직(Model)를 연결시키는 다리 역할을 한다.</p>
<blockquote>
<p>HomeController 설계 체크사항</p>
</blockquote>
</blockquote>
</blockquote>
<li>@Controller 어노테이션
<li>GetMapping 어노테이션
<li>포워딩 위치 확인 & 포워딩 도착지 설계

<pre><code class="language-java">package net.softsociety.springA.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping({&quot;/&quot;, &quot;&quot;})
    public String home() {
        return &quot;home&quot;;
    }

}</code></pre>
<br>

<hr>
<h2 id="5-homehtml-설계">5. home.html 설계</h2>
<blockquote>
<p>home.html 설계
src/main/resuorces -&gt; templates -&gt; home.html 생성
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/d85a0d99-5df5-4318-952b-feb3b8f09be0/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>서버가 연결되는지 확인할 정도로만 간단히 꾸미기</p>
</blockquote>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;springA&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;[ 🐰🐭🐼 springA 🐼🐭🐰 ]&lt;/h1&gt;

    &lt;p&gt;&lt;a href=&quot;&quot;&gt;회원가입&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=&quot;&quot;&gt;로그인&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=&quot;&quot;&gt;로그아웃&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=&quot;&quot;&gt;개인정보수정&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=&quot;&quot;&gt;게시판&lt;/a&gt;&lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre><br>

<hr>
<h2 id="6-서버-연동-확인">6. 서버 연동 확인</h2>
<blockquote>
<p>springA 서버 켜기
  <img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/7d2998fb-0f5c-4de7-ac4d-5cfe869fe4c5/image.png" alt="">
  오류 발생 </p>
</blockquote>
<ul>
<li>Using generated security password: ****</li>
</ul>
<blockquote>
<p>이번 프로젝트에서 최종 설계 목표가 util기능과 security 기능을 사용해 보는것이었음
거기서 build.gradle 에서 Dependency 를 확인해보면 
  <img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/62d13faa-64fd-42dc-b3fe-c5c34eb35675/image.png" alt="">
Lombok
MyBatis Framework
ORacle Driver
Spring Boot Devtools
Spring Security
Spring Web
Thymeleaf
의 Dependency가 모두 활성화 되어 있음
여기서 현재 서버가 구동되는 것을 확인하기 위한 Dependency만 켜고 나머지는 일단 주석처리
  <img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/9ecdb543-dfe8-45f8-afce-e8d3416f4383/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>그래도 Using generated security password: 콘솔이 없어지지 않는다 해결방법 더 찾아봐야 할 것 같다...</p>
</blockquote>
<blockquote>
<p>일단 해결 못한채로 콘솔에서 알려주는 비밀번호로 접속하기
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/ad1dbfb6-8b75-4677-9b25-3d2a6f7c8deb/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>서버 구동 확인 완료
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/a01392ca-e3a4-4a36-b3eb-c7f6639131f5/image.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Spring] 1. 프로젝트 생성]]></title>
            <link>https://velog.io/@aurevoir-jaeho/Spring-1.-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1</link>
            <guid>https://velog.io/@aurevoir-jaeho/Spring-1.-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1</guid>
            <pubDate>Mon, 29 May 2023 16:01:18 GMT</pubDate>
            <description><![CDATA[<p>[Reference]</p>
<p><a href="https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard">스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술</a></p>
<h1 id="1-프로젝트-생성">1. 프로젝트 생성</h1>
<h2 id="11-사전-준비물">1.1 사전 준비물</h2>
<blockquote>
</blockquote>
<ul>
<li>Java 8 설치</li>
<li>IDE : InteliJ 또는 Eclipse 설치</li>
</ul>
<h2 id="12-스프링부트-스타터-사이트로-이동해서-스프링-프로젝트-생성">1.2 스프링부트 스타터 사이트로 이동해서 스프링 프로젝트 생성</h2>
<blockquote>
</blockquote>
<p><a href="https://start.spring.io">https://start.spring.io</a></p>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/260e8330-125c-4e72-9d1c-9877d0264798/image.png" alt=""></p>
<blockquote>
<blockquote>
<p>아래의 그림과 같이 조건을 맞추어 프로젝트를 생성해야한다.</p>
</blockquote>
</blockquote>
<ul>
<li>프로젝트 선택<ul>
<li>Project : Gradle - Groovy</li>
<li>Language : Java</li>
<li>Spring Boot : 2.7.12</li>
<li>Packaging : Jar</li>
<li>Java : 8    <blockquote>
<ul>
<li>Project Metadata</li>
</ul>
</blockquote>
</li>
<li>GroupID : hello</li>
<li>ArtifactID : hello-spring</li>
<li>Dependencies : Spring Web / Thymeleaf(직접 검색해서 추가)<blockquote>
</blockquote>
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/4b62e28c-d266-496e-9c6d-30f8c39fcec9/image.png" alt=""></li>
</ul>
</li>
</ul>
<h2 id="13-프로젝트-디렉토리로-옮기기">1.3 프로젝트 디렉토리로 옮기기</h2>
<blockquote>
</blockquote>
<ul>
<li>GENERATE키를 눌러 생성 후 zip파일을 원하는 위치의 디렉토리에 넣어서 압축을 풀어준다.<blockquote>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/198a9035-0942-46a9-82c1-22c6ed8e7f83/image.png" alt=""></p>
</blockquote>
</li>
</ul>
<h2 id="14-인텔리제이에서-import해오기">1.4 인텔리제이에서 Import해오기</h2>
<blockquote>
<blockquote>
</blockquote>
</blockquote>
<ul>
<li>인텔리제이 접속 후, <strong>hello-spring</strong> 디렉토리 내에 있는 <strong>build.gradle</strong> 으로 파일을 직접 찍어서 스트링부트 스타터 사이트에서 생성한 프로젝트를 연다.<blockquote>
</blockquote>
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/de41c92a-a0e2-44ec-a7ca-ce8b227d044f/image.png" alt="">
<img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/acb112f0-ba35-4dad-9c85-4045134d22d0/image.png" alt=""></li>
</ul>
<h1 id="2-프로젝트-실행">2. 프로젝트 실행</h1>
<h2 id="21-main-매서드-구동-test">2.1 Main 매서드 구동 test</h2>
<blockquote>
</blockquote>
<p>main 매서드를 실행해보면 정상 작동하는 것을 확인 할 수 있고</p>
<blockquote>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/20e42ec7-74db-4df9-b80d-7598f3dca912/image.png" alt=""></p>
</blockquote>
<p>톰캣 웹서버가 생성되고 포트번호가 8080인 것을 확인 할 수 있다.</p>
<blockquote>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/220db8d0-3e01-42ce-85a6-75448bebcfe5/image.png" alt=""></p>
</blockquote>
<h2 id="22-톰캣-웹서버-구동-test">2.2 톰캣 웹서버 구동 test</h2>
<blockquote>
</blockquote>
<p>사파리를 이용해 localhost:8080 주소를 입력해서 접속해보면</p>
<blockquote>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/91ed3c3c-0212-4425-a51d-bbdde90c6209/image.png" alt=""></p>
</blockquote>
<p>오류가 뜨는 것이 정상이다
이번에는 실행중인 웹서버를 끄고 다시 localhost:8080 주소를 입력해서 접속해보면 당연하게</p>
<blockquote>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/030f98c0-2d28-482c-9afd-813b293a0e46/image.png" alt=""></p>
</blockquote>
<p>웹서버와의 연결이 끊어진다.</p>
<blockquote>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/40fa1f84-8631-4df1-97ff-00b3b51b9ee4/image.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[에러 일지] A problem occurred configuring root project ...]]></title>
            <link>https://velog.io/@aurevoir-jaeho/A-problem-occurred-configuring-root-project-</link>
            <guid>https://velog.io/@aurevoir-jaeho/A-problem-occurred-configuring-root-project-</guid>
            <pubDate>Mon, 29 May 2023 14:41:37 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>🚫 A problem occurred configuring root project &#39;hello-spring&#39;.
Could not resolve all files for configuration &#39;:classpath&#39;.
Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.2.
Required by:
project : &gt; org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.2
No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.2 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute &#39;org.gradle.plugin.api-version&#39; with value &#39;7.6&#39; but:
...</p>
</blockquote>
<h1 id="원인">원인</h1>
<p>JAVA는 8 버전인데, Spring boot 버전은 3.x로 설치해서 발생한 에러이다.
Spring boot 3.x 버전은 JAVA 17 버전부터 지원한다.</p>
<h1 id="해결-방법">해결 방법</h1>
<p>방법 1. JAVA를 17 버전으로 업데이트 한다.
방법 2. Spring boot를 2.x 버전으로 선택하여 프로젝트를 생성한다.</p>
<p><img src="https://velog.velcdn.com/images/aurevoir-jaeho/post/1953329a-d334-459c-8be5-c4df9540fedb/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>