728x90
반응형
SMALL

질문 목록 만들기

http://localhost:8080/question/list 요청

 

=> 404에러 발생. 저 url과 매핑되는 것이 없기 때문.

 

질문 목록 URL 매핑하기

com.mysite.sbb.question 패키지 안에
QuestionController.java 클래스 생성.

 

QuestionController.java

package com.mysite.sbb.question;

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

@Controller
public class QuestionController {

	@GetMapping("/question/list")
	@ResponseBody
	public String list() {
		return "question list";
	}
}

재실행 하면 문자열이 출력된 것을 확인 가능.

URL 매핑에 성공한 것이다.

 

템플릿 설정하기

앞서 'question list'를 직접 자바 코드로 작성하여 문자열로 리턴하였다.

하지만 보통 자바 코드에서 직접 만들지 않고 템플릿을 사용한다.

템플릿이란? 자바 코드를 삽입할 수 있는 HTML 형식의 파일을 말한다.

 

템플릿으로는 타임리프(Thymeleaf)를 사용할 것이다.

 

타임리프 설치

//thymeleaf
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'

build.gradle 파일에 추가하고 마우스 우클릭 후 [Gradle] -> [Refresh...] 클릭.

 

템플릿 사용하기

html파일 생성

src/main/resources/template 을 선택 후 우클릭을 눌러 [New -> File]을 클릭한다..
파일이름은 "question_list.html"로 입력한다.

<h2>Hello Template</h2>

Controller 수정

package com.mysite.sbb.question;

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

@Controller
public class QuestionController {

	@GetMapping("/question/list")
	public String list() {
		return "question_list";
	}
}
@ResponseBody 어노테이션을 삭제하고, return값은 html의 파일명으로 수정한다.

실행 후 화면.

 

데이터를 템플릿에 전달하기

이제 질문 목록의 데이터를 조회하여 템플릿을 통해 화면에 출력하려고 한다..
질문 관련 데이터를 조회하기 위해서는 QuestionRepository를 사용해야 한다.

 

Controller 수정

QuestionController.java

package com.mysite.sbb.question;

import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@Controller
public class QuestionController {
	private final QuestionRepostiory questionRepostiory;

	@GetMapping("/question/list")
	public String list(Model model) {
		List<Question> questionList = this.questionRepostiory.findAll();
		model.addAttribute("questionList",questionList);
		return "question_list";
	}
}
@RequiredArgscontructor 어노테이션은 생성자 방식으로 questionRepository 객체를 주입한다. final이 붙은 속성을 포함하는 생성자를 자동으로 만들어주는 역할을 한다.

또 finalAll() 메서드를 이용하여 질문 목록을 가져와 questionList에 저장해준다.
list메서드의 매개변수에 있는 model을 통해서 템플릿으로 데이터를 전달해준다.

 

 

데이터 화면에 출력하기

html 템플릿 수정

question_list.html

<table>
	<thead>
		<tr>
			<th>제목</th>
			<th>작성일시</th>
		</tr>
	</thead>
	<tbody>
		<tr th:each="question : ${questionList}">
			<td th:text="${question.subject}"></td>
			<td th:text="${question.createDate}"></td>
		</tr>
	</tbody>
</table>
tbody 안의 내용이 가장 중요하다.
th:는 타임리프에서 사용하는 속성인데 이 곳에서 자바 코드와 연결된다. 자바 코드에서 model에 담아 전달했던 questionList를 ${questionList}를 통해 받는다.
th:each문을 통해 questionList에서 값을 하나씩 꺼내 출력한다.

실행결과.

 

루트 URL 사용하기

http://localhost:8080 으로 접속해보자.

 

현재 루트 URL을 매핑하지 않아서 404 오류가 뜬다.

 

MainController.java

package com.mysite.sbb;

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

@Controller
public class MainController {
	@GetMapping("/sbb")
	@ResponseBody
	public String index() {
		return "안녕하세요. sbb에 오신 것을 환영합니다.";
	}
	
	@GetMapping("/")
	public String root() {
		return "redirect:/question/list";
	}
}
"/"url과 매핑을 시킨다.
여기서 "redirect:/question/list" 이 부분은 루트로 들어오면 /question/list 페이지로 리다이렉트 하라는 명령어이다.

따라서 localhost:8080을 입력해도 localhost:8080/question/list로 자동으로 이동한다.

728x90
반응형
LIST
728x90
반응형
SMALL

답변 데이터 저장하기

@Autowired AnswerRepository answerRepository;

	@Test
	void testJpa() {
		//답변 데이터 저장하기
		Optional<Question> oq = this.questionRepostiory.findById(2);
		assertTrue(oq.isPresent());
		Question q = oq.get();
				
		Answer a = new Answer();
		a.setContent("네 자동으로 생성됩니다.");
		a.setQuestion(q);
		a.setCreateDate(LocalDateTime.now());
		this.answerRepository.save(a);
	}

 

 

답변 데이터 조회하기

@Test
	void testJpa() {
		//답변 데이터 조회하기
		Optional<Answer> oa = this.answerRepository.findById(1);
		assertTrue(oa.isPresent());
		Answer answer = oa.get();
		assertEquals(2, answer.getQuestion().getId());
	}

 

답변 데이터를 통해 질문 데이터 찾기 VS 질문 데이터를 통해 답변 데이터 찾기

@Test
@Transactional
	void testJpa() {
		//질문 데이터를 통해 답변 데이터 찾기
		Optional<Question> oq = this.questionRepostiory.findById(2);
		assertTrue(oq.isPresent());
		Question question = oq.get();
		
		List<Answer> answerList = question.getAnswereList();
		
		assertEquals(1, answerList.size());
		assertEquals("네 자동으로 생성됩니다.", answerList.get(0).getContent());
	}

 

현재의 패키지 상태. 패키지들을 도메인대로 나눔.

728x90
반응형
LIST
728x90
반응형
SMALL
@Test
	void testJpa() {
		//findBySubjectLike
		List<Question> qList = this.questionRepostiory.findBySubjectLike("sbb%");
		Question q = qList.get(0);
		assertEquals("sbb가 무엇인가요?", q.getSubject());
		
	}

리포지터리 생성

앞서 만든 엔티티에 대해 데이터들을 CRUD할 수 있도록 도와주는 인터페이스를 작성한다.

package com.mysite.sbb;

import org.springframework.data.jpa.repository.JpaRepository;

public interface QuestionRepostiory extends JpaRepository<Question, Integer> {

}
package com.mysite.sbb;

import org.springframework.data.jpa.repository.JpaRepository;

public interface AnswerRepository extends JpaRepository<Answer, Integer> {

}

JpaRepository를 상속받아야 함.

 

JUnit 설치

//JUnit
testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org..junit.platform:junit-platform-launcher'

build.gradle 수정.

 

질문 데이터 저장하기 (Test 이용)

package com.mysite.sbb;

import java.time.LocalDateTime;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SbbApplicationTests {
	
	@Autowired
	private QuestionRepostiory questionRepostiory;

	@Test
	void testJpa() {
		Question q1 = new Question();
		q1.setSubject("sbb가 무엇인가요?");
		q1.setContent("sbb에 대해서 알고 싶습니다.");
		q1.setCreateDate(LocalDateTime.now());
		this.questionRepostiory.save(q1);
		
		Question q2 = new Question();
		q2.setSubject("스프링 부트 모델 질문입니다.");
		q2.setContent("id는 자동으로 생성되나요?");
		q2.setCreateDate(LocalDateTime.now());
		this.questionRepostiory.save(q2);
	}

}

테스트 실행은 [Run As] -> [Junit Test]
* 테스트를 실행할 때는 server를 끄고 실행해야함!!

@Autowired 어노테이션은 repository를 new Repository();로 생성하지 않고 spring이 만들어주는 것을 사용하겠다는 의미.

데이터가 잘 들어간 것을 확인할 수 있음.

 

질문 데이터 조회하기

findAll()

//질문 조회하기
List<Question> all = this.questionRepostiory.findAll();
assertEquals(2, all.size());
		
Question q = all.get(0);
assertEquals("sbb가 무엇인가요?", q.getSubject());

test 코드에 추가.

 

* asserEquals 메서드는 jupiter에서 제공함. 두 인자값을 비교해주는 역할.
* findAll() 메서드는 jpa에서 제공하는 기본 메서드.

테스트 성공.

 

findById()

id값으로 찾기

@Test
	void testJpa() {
		//findById
		Optional<Question> oq = this.questionRepostiory.findById(1);
		if (oq.isPresent()) {
			Question question = oq.get();
			assertEquals("sbb가 무엇인가요?", question.getSubject());
		}
	}

 

findBySubject()

findBySubject는 JPA에서 제공해주는 것이 아니기 때문에 직접 선언을 해주어야 한다.
그럼 select * from question where subject=? 형식으로 쿼리를 자동으로 날린다.
package com.mysite.sbb;

import org.springframework.data.jpa.repository.JpaRepository;

public interface QuestionRepostiory extends JpaRepository<Question, Integer> {
	Question findBySubject(String subject);
}
@Test
	void testJpa() {
		//findBySubject
		Question question = this.questionRepostiory.findBySubject("sbb가 무엇인가요?");
		assertEquals(1, question.getId());
	}

 

 

findBySubjectAndContent()

Question findbySubjectAndContent(String subject, String content);

QuestionRepository에 메서드 추가.

@Test
	void testJpa() {
		//findBySubjectAndContent
		Question q = this.questionRepostiory.findbySubjectAndContent("sbb가 무엇인가요?",
				"sbb에 대해서 알고 싶습니다.");
		assertEquals(1, q.getId());
	}

 

findBySubjectList()

List<Question> findBySubjectLike(String subject);

@Test
	void testJpa() {
		//findBySubjectLike
		List<Question> qList = this.questionRepostiory.findBySubjectLike("sbb%");
		Question q = qList.get(0);
		assertEquals("sbb가 무엇인가요?", q.getSubject());
		
	}

 

질문 데이터 수정하기

@Test
	void testJpa() {
		//질문 데이터 수정하기
		Optional<Question> oq= this.questionRepostiory.findById(1);
		assertTrue(oq.isPresent());
		Question q = oq.get();
		q.setSubject("수정된 제목");
		this.questionRepostiory.save(q);
	}

제목이 수정된 것을 확인할 수 있음.

 

질문 데이터 삭제하기

@Test
	void testJpa() {
		//질문 데이터 삭제하기
		assertEquals(2, this.questionRepostiory.count());
		Optional<Question> oq= this.questionRepostiory.findById(1);
		assertTrue(oq.isPresent());
		Question q = oq.get();
		this.questionRepostiory.delete(q);
		assertEquals(1, this.questionRepostiory.count());
	}

ID가 1인 question이 삭제됨.

728x90
반응형
LIST
728x90
반응형
SMALL

실행되는 쿼리문 보기

#JPA 쿼리문 보기
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true

application.properties에 추가.

콘솔에서 실행되는 쿼리문 확인 가능.

 

728x90
반응형
LIST
728x90
반응형
SMALL

H2 데이터베이스

데이터 베이스 설치하기

1. build.gradle 라이브러리 설치.

//h2 database
runtimeOnly 'com.h2database:h2'

build.gradle 파일 마우스 오른쪽 클릭 -> gradle -> Refresh Gradle Project 클릭.

 

2. application.properties 설정

#DATABASE
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

데이터베이스 설정 코드 추가.

- spring.h2.console.enabled : H2 콘솔 접속 여부
- spring.h2.console.path : H2 콘솔로 접속하기 위한 URL경로.
- spring.datasource.url : 데이터베이스에 접속하기 위한 경로.
- spring.datasource.driverClassName : 데이터베이스에 접속할 때 사용하는 드라이버 클래스명
- spring.datasource.username : 데이터베이스 사용자명
- spring.datasource.password : 데이터베이스 비밀번호

 

3. 데이터베이스 파일 생성

jdbc:h2:~/local 이렇게 설정했을 때 '~'는 사용자의 홈 디렉토리.
아래에 H2데이터베이스파일로 local.mv.db라는 파일을 생성한다.
copy con local.mv.db + (Ctrl+Z)

만들어진 것 확인.

 

4. H2 데이터베이스 접속

http://localhost:8080/h2-console

설정한대로 입력한 후 Connect클릭.

 

연결완료.

 

JPA

JPA 환경 설정하기

1. build.gradle에 라이브러리 추가

//JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

build.gradle 파일 마우스 오른쪽 클릭 -> gradle -> Refresh Gradle Project 클릭.

 

2. applicaation.properties 수정

#JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

 

게시판 웹의 엔티티 작성

질문 엔티티

package com.mysite.sbb;

import java.time.LocalDateTime;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
public class Question {
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;
	
	@Column(length = 200)
	private String subject;
	
	@Column(columnDefinition = "TEXT")
	private String content;
	
	private LocalDateTime createDate;
    
    //관계주입
    @OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
	private List<Answer> answereList;
}

 

답변 엔티티

package com.mysite.sbb;

import java.time.LocalDateTime;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
public class Answer {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;
	
	@Column(columnDefinition = "TEXT")
	private String content;
	
	private LocalDateTime createDate;
	
	//관계주입
	@ManyToOne
	private Question question;
}

 

 

728x90
반응형
LIST
728x90
반응형
SMALL

프로젝트 구조

* src/main/java : 자바 파일 저장하는 디렉토리.

* src/main/resources : 자바 파일을 제외한 HTML, CSS, JS, 환경파일 저장하는 디렉토리.

 

* templates : HTML 형식의 템플릿들을 저장.

* static : CSS, JS, 이미지 파일 저장.

* application.properties : 환경설정 파일.

 

* src/test/java : 테스트하는 코드를 저장하는 디렉토리.

 

* build.gradle : 플러그인과 라이브러리를 설치하기 위한 환경 파일.

 

간단한 웹 만들기

컨트롤러 만들고 URL 매핑

 

만약 아무 컨트롤러가 없는 상황에서 실행을 시키고 "localhost:8080/sbb"를 접속하면 404에러가 발생한다.

즉, 요청한 url을 찾을 수 없다는 의미이다. 

당연함. 우리가 url 매핑을 해주지 않았기 때문에..

 

package com.mysite.sbb;

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

@Controller
public class MainController {
	@GetMapping("/sbb")
	public void index() {
		System.out.println("안녕");
	}
}

이 MainController를 추가하고 index()를 추가해보자.

 

실행을 해보면 이전의 400에러와는 다르게 500에러가 발생한다.

이 오류는 index()메서드가 반환해야 하는데 아무것도 반환하지 않아 발생한 오류이다.

 

대신 console에는 프린트 할 값이 잘 출력되어 있다.

 

package com.mysite.sbb;

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

@Controller
public class MainController {
	@GetMapping("/sbb")
	@ResponseBody
	public String index() {
		return "index";
	}
}

코드를 이렇게 변경해 보았다. @ResponseBody 어노테이션을 추가하여 index()메서드가 String값 그대로 반환할 것이라고 알려주고, index()는 String값 "index"를 return한다.

 

어떠한 오류도 나지 않고 index 값도 정상적으로 출력된 것을 확인할 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

이클립스에서 코드를 작성할 때 하나하나 작성하기 귀찮을 때

간단한 설정으로 자동완성을 적용할 수 있다.

 

이클립스 자동완성 설정하기

1. Window -> Preferences 클릭.

2. content assist 검색.

 

3. Auto activation triggers for Java: 에 입력 후 Apply and Close 클릭.

.qwertyuioplkjhgfdsazxcvbnm_QWERTYUIOPLKJHGFDSAZXCVBNM

 

4. 적용 확인

 

728x90
반응형
LIST
728x90
반응형
SMALL

Spring Boot Devtools 설치하기

 

Spring Boot Devtools 라이브러리는 서버를 매번 재시작할 필요 없이 수정한 내용이 반영된다.

package com.mysite.sbb;

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

@Controller
public class HelloController {
	@GetMapping("/hello")
	@ResponseBody
	public String hello() {
		return "Hello SBB";
	}
}

HelloController부분에서 return "Hello SBB"로 수정.

 

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.4'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.mysite'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	developmentOnly 'org.springframework.boot:spring-boot-devtools' //devtools 추가
}

tasks.named('test') {
	useJUnitPlatform()
}

build.gradle 파일의 dependencies에 한 줄만 추가하면 된다.

 

sbb 마우스 오른쪽 클릭 후 Gradle -> Refresh Gradle Project 클릭하여 필요한 라이브러리 설치.

 

sbb [devtools] [:8080]으로 변경된 것 확인.

위의 첫번째 버튼을 클릭 해 서버를 재시작 하자.

 

변경된 것을 확인할 수 있다.

 

package com.mysite.sbb;

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

@Controller
public class HelloController {
	@GetMapping("/hello")
	@ResponseBody
	public String hello() {
		return "Hello Spring Boot Board";
	}
}

이번엔 return 내용을 수정해서 저장만 하고 자동 반영되는 건지 확인해보자.

 

서버를 재시작 하지 않고도 새로고침만 했더니 바로 반영되는 것을 확인할 수 있다.

 

롬복 설치하기

https://projectlombok.org/download
 

Download

 

projectlombok.org

 java -jar .\lombok.jar

다운 받은 폴더에서 cmd창으로 명령어 실행.

 

어느 IDE에 적용할건지 선택 후 Install/Update 클릭.

 

Quit Installer 클릭.

 

//lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projeectlombok:lombok'

STS 종료하고 재시작 후 build.gradle 의 dependencies 추가.

 

저장 후 gradle refesh 필수!!

 

롬복으로 Getter, Setter 메서드 만들기

package com.mysite.sbb;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class HelloLombok {
	private String hello;
	private int lombok;

	public static void main(String[] args) {
		HelloLombok helloLombok = new HelloLombok();
		helloLombok.setHello("헬로");
		helloLombok.setLombok(5);
		
		System.out.println(helloLombok.getHello());
		System.out.println(helloLombok.getLombok());
	}
}

직접 setter와 getter를 만들지 않고도 결과가 잘 나온 것을 확인할 수 있다.

 

롬복으로 생성자 만들기

package com.mysite.sbb;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public class HelloLombok {
	private final String hello;
	private final int lombok;

	public static void main(String[] args) {
		HelloLombok helloLombok = new HelloLombok("헬로", 5);
		
		System.out.println(helloLombok.getHello());
		System.out.println(helloLombok.getLombok());
	}
}

RequiredArgsContructor 어노테이션을 추가하면 생성자를 따로 만들어주지 않아도 된다.

대신 멤버변수는 모두 final 이어야 하고 그럼 setter는 사용할 수 없다.

 

728x90
반응형
LIST
728x90
반응형
SMALL

스프링 부트 프로젝트 만들기

 

스프링 부트 프로젝트 생성은 'Create new Spring Starter Project'를 클릭해서 생성.

 

빌드는 gradle로! java 버전은 자신의 환경에 맞게 설정하고 'Next' 클릭.

 

스프링 부트 버전은 SNAPSHOT이 써있지 않은, 숫자만 써있는 가장 최신 버전으로 선택 후

web을 검색해서 'Spring Web'을 선택하고 'Finish'버튼 클릭.

 

생성 완료 후 화면.

인코딩 방식이 설정되지 않았다는 Warnings 경고가 뜬다. 

마우스 오른쪽 클릭 후  'Quick Fix' 클릭.

 

UTF-8 설정을 확인하고 'Finish' 클릭.

 

그럼 아래 경고가 사라진 것을 확인할 수 있다.

 

컨트롤러 만들기

클래스명을 'HelloController'로 입력 후 'Finish'버튼 클릭.

 

package com.mysite.sbb;

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

@Controller
public class HelloController {
	@GetMapping("/hello")
	@ResponseBody
	public String hello() {
		return "Hello World";
	}
}

 

실행을 위해서 가장 기본적인 controller를 작성해본다.

 

HelloController에 @Controller라는 어노테이션을 붙여줘야 한다.

@GetMapping은 localhost:8080/hello를 요청했을 때 hello()메서드가 실행되도록 해준다.

@ResponseBody는 반환값이 "Hello World" 문자열 그 자체임을 나타낸다.

 

로컬 서버 실행하기

대시보드의 sbb를 클릭하면 위의 버튼들이 활성화 되는데 여기서 왼쪽의 시작 버튼을 클릭한다.

 

정상적으로 실행된 것을 확인할 수 있다.

 

localhost:8080/hello 확인하기

728x90
반응형
LIST
728x90
반응형
SMALL

스프링 부트 개발 환경 준비하기

JDK 설치하기

https://www.oracle.com/java/technologies/downloads/
 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

위 사이트에서 JDK를 설치할 수 있다.

17이상으로 OS에 맞춰 설치하면 된다.

C:\Program Files\Java\jdk-17 

설치가 완료되면 위와 같은 디렉터리에 설치될 것이다. 버전에 따라 디렉터리명이 다르다.

cmd창에서 java의 버전을 확인해본다.

 

STS 설치하기(Spring Tool Suite)

https://spring.io/tools
 

Spring | Tools

 

spring.io

이클립스도 진행. 자신의 OS에 맞춰 설치하면 된다.

 

다운받은 jar파일을 더블클릭하여 실행하면 'sts-4.22.0.RELEASE' 디렉터리가 생성된다.

 

여기서 jar파일 실행이 되지 않으면 아래 게시글 참고하기.

https://exuzii.tistory.com/62

 

windows에서 .jar 파일 실행이 안 될 때

STS를 설치하다가 .jar파일을 더블클릭하여 실행하면 디렉터리가 생성이 되어야 하는데 연결 파일만 뜨고 실행이 안됨.. 1. 먼저 cmd 창을 키고 java가 설치되어 있는지 확인! java -version 17버전으로

exuzii.tistory.com

디렉터리가 생성됐으면 이 디렉터리를 C드라이브 아래로 이동시킨다.

 

STS 실행하기

'SpringToolSuite4.exe' 파일 실행

 

 실행하면 작업공간을 설정해야 한다. 앞으로 작성하는 모든 파일이 이 디렉터리 안에 생긴다.

 

첫 화면

728x90
반응형
LIST

+ Recent posts