묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
securityMatcher, requestMatcher의 차이점이 뭔가요?
정확히 이해가 안가요http.securityMatcher("/api/**")http.requestMatcher("/api/**")둘다 /api 하위에 보안 필터를 적용하기 위함이 아닌가요?어떤 차이가 있는지 명확히 알고싶어요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 난이도
안녕하세요. 컴퓨터공학과 3학년학생입니다. 백엔드에 관심이 생겨 스프링 강의를 들으려 강의를 찾아보던중 인프런의 김영한님의 스프링 강의를 알게 되었습니다. 김영한님 강의가 어렵다는 말도 있던데, 스프링 완전 초보자가 들어도 잘 이해할 수 있을지 궁금합니다! 저는 로드맵에서 가장 첫 무료 입문 강의(코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 )를 초반만 조금 들었봤는데 조금 난이도가 있더라고요. 이게 전체적인 흐름을 알려주는거라서 어려운것인가요? 로드맵 뒤에 스프링 핵심 원리 - 기본편도 비슷한 난이도인가요? 더 쉬운편인지 궁금합니다
-
미해결스프링 핵심 원리 - 기본편
맞는 질문인지는 모르겠는데
[질문 내용]싱글톤 패턴으로 객체를 하나만 생성해서 용량적으로 효율적이다라는 관점은 받아들여졌는데, 만약 수많은 요청자가 클래스 영역의 해당 하나의 객체(싱글톤 객체)를 가져다 쓰기 위해서는 줄을 서야해서 속도가 저하되지 않을까요? 멀티쓰레드 같은 개념이 아직 부족해서일까요?아니면 PC의 운영체제는 시분할 방식이기에 어쨌든 동시에 실행되는 것 같아도 잘게 쪼개서 실행하는 논리에서 연관성이 있을까요?답변주시면 감사하겠씁니다:)
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
섹션 6. 로그인 처리1
@PostMapping("/logout") public String logout(HttpServletResponse response) { expired(response, "memberId"); return "/"; } private void expired(HttpServletResponse response, String cookieName) { Cookie cookie = new Cookie(cookieName, null); cookie.setMaxAge(0); response.addCookie(cookie); }로그아웃 할 때, 쿠키에 setMaxAge(0)으로 쿠키를 날리는 것은 이해가 되는데, 쿠키를 새로 만들어서 보내는 이유는 뭔가요? 원래 있던 쿠키의 setMaxAge(0)으로 바꾸는 것도 아니고, new Cookie를 만들어서, 새로 만든 쿠키의 기간을 0으로 맞추는데 어째서 원래 있던 쿠키가 사라지는 건지 모르겠습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cmd에서 조작하는 법을 모르겠습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]일단 h2 다운받기는 했는데 cmd에서 조작하는 법을 모르겠습니다. 아무거나 쳐봐도 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고만 뜹니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
폼 로그인 방식 failureUrl 지정 시 인가 처리 API 가 작동하지 않습니다.
위와 같이 failureUrl 지정하지 않았을 경우에는 이렇게 애플리케이션 홈 화면이 잘 나타납니다. 그런데 이렇게 failureUrl 을 별도로 지정해주게 되면 홈 화면에서도 인증을 요구하고 인가 처리에 대한 설정이 무시되어 버립니다. 왜 이렇게 되는 것인가요? 강의에서 이 현상에 대해서는 별 말씀 없으셔서 혼란스럽네요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한 강사님 스프링 로드맵을 수강하려고 합니다.
백엔드 프로젝트로데이터베이스를 사용하지 않는 게시판을 만들어보고 싶은데김영한 강사님의 로드맵스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 스프링 핵심 원리 - 기본편 현재 강의 모든 개발자를 위한 HTTP 웹 기본 지식 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술스프링 MVC 2편 - 백엔드 웹 개발 활용 기술스프링 DB 1편 - 데이터 접근 핵심 원리스프링 DB 2편 - 데이터 접근 활용 기술스프링 핵심 원리 - 고급편실전! 스프링 부트 중 어디까지는 들어야지 제가 원하는 간단한 프로젝트를 진행할수 있을지 궁금합니다.감사합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
h2 database 연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]선생님 h2에 서버 모드로 연결하려고 할 때 해당 오류가 발생합니다. 도와주세요 ㅜㅜ 도저히 저의 힘으로 해결 할 수가 없습니다.IO Exception: "/Users/jonghyunlee/test outside /opt/homebrew/var/sonarqube/data" [90028-224] 90028/90028 (도움말)org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: "/Users/jonghyunlee/test outside /opt/homebrew/var/sonarqube/data" [90028-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:566) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:223) at org.h2.message.DbException.get(DbException.java:199) at org.h2.engine.ConnectionInfo.setBaseDir(ConnectionInfo.java:250) at org.h2.server.TcpServerThread.run(TcpServerThread.java:152) at java.base/java.lang.Thread.run(Thread.java:840) at org.h2.message.DbException.getJdbcSQLException(DbException.java:566) at org.h2.engine.SessionRemote.readException(SessionRemote.java:650) at org.h2.engine.SessionRemote.done(SessionRemote.java:619) at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:148) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:438) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:330) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:288) at org.h2.server.web.WebServer.getConnection(WebServer.java:811) at org.h2.server.web.WebApp.login(WebApp.java:1039) at org.h2.server.web.WebApp.process(WebApp.java:227) at org.h2.server.web.WebApp.processRequest(WebApp.java:177) at org.h2.server.web.WebThread.process(WebThread.java:154) at org.h2.server.web.WebThread.run(WebThread.java:103) at java.base/java.lang.Thread.run(Thread.java:1583)
-
미해결스프링 핵심 원리 - 기본편
MemberServiceImpl 관련 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]MemberServiceImpl에서 memberRepository를 @Autowired로 자동주입하는데 @Autowired 없이record 사용 시에는 public record MemberServiceImpl(MemberRepository memberRepository) implements MemberService이렇게 하면 되는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Member와 Order에 LAZY 설정을 해도 순환참조가 발생하는게 맞나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니요3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]양쪽에 LAZY로 설정되어 있는것 같은데맴버를 조회하면 ORDER와 MEMBER가 무한으로 탑니다.( 주문까지 진행한 상태 )그게 현재 진도에서 맞는 상태인지 궁금합니다.(다음 강의에 설명 나오는지 모름)
-
미해결토비의 스프링 부트 - 이해와 원리
섹션3 HelloController, DemoAppication
둘다 Mapping이 "/hello"인데실행을 하면 DemoApplication에서 정의한 hello가 매핑되는건 왜인가요??(HelloController는 안타는 이유가 뭘까요?)
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
13강 DB연결 관련 질문드립니다.
안녕하세요. 우선 좋은 강의 만들어 주셔서 감사합니다.13강을 수강하던 중 오류가 발생하여 질문드립니다. 검색해보니 테이블 명이 user로 생성을 하면 안되는 것 같아 user_table 이라는 명칭으로 테이블을 생성했습니다.CLI로 확인해본 결과 테이블 자체는 정상적으로 생성이 되었습니다. 그런데 컨트롤러와 yml 파일 설정 후 화면에서 데이터를 저장하려고 하니 오류가 발생합니다. spring: database: url: "jdbc:mysql://localhost/library" username: "root" password: "" drive-class-name: com.mysql.cj.jdbc.Driver package com.group.libraryapp.controller.User; import com.group.libraryapp.domain.user.User; import com.group.libraryapp.dto.User.request.UserCreateRequest; import com.group.libraryapp.dto.User.response.UserResponse; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; @RestController public class UserController { private final JdbcTemplate jdbcTemplate; public UserController(JdbcTemplate jdbcTemplate){ this.jdbcTemplate = jdbcTemplate; } private final List<User> users = new ArrayList<>(); @PostMapping("/user") public void saveUser(@RequestBody UserCreateRequest request){ String sql = "INSERT INTO user_table (name, age) VALUES (?,?)"; jdbcTemplate.update(sql, request.getName(), request.getAge()); } @GetMapping("/user") public List<UserResponse> getUsers() { String sql = "SELECT * FROM user_table"; //람다로 변경 알트+엔터 return jdbcTemplate.query(sql, (rs, rowNum) -> { long id = rs.getLong("id"); String name = rs.getString("name"); int age = rs.getInt("age"); return new UserResponse(id, name, age); }); } } INSERT INTO user_table (name, age) VALUES (?,?) [42104-214]] with root cause org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USER_TABLE" not found (this database is empty); SQL statement: INSERT INTO user_table (name, age) VALUES (?,?) [42104-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214] at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214] at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8385) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8369) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.readTableOrView(Parser.java:8358) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.readTableOrView(Parser.java:8328) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parseInsert(Parser.java:1632) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parsePrepared(Parser.java:814) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214] at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214] 위와 같이 데이터베이스가 비었다고 하고 테이블을 찾지 못하는데 제가 어느 부분을 확인해야 하는지 궁금해 질문드립니다.
-
미해결토비의 스프링 부트 - 이해와 원리
섹션2 hello project
@RestController public class helloController { @GetMapping("/hello") public String hello(String name){ return "hello"+name; }}안녕하세요, @RequestParam을 안쓰는 이유가 무엇인가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
상품 등록에서 상품명을 빈 칸으로 넣었을 때
html <form action="item.html" th:action th:object="${item}" method="post"> <label for="itemName" th:text="#{label.item.itemName}">상품명</label> <input type="text" id="itemName" th:field="*{itemName}" th:errorclass="field-error" class="form-control" placeholder="이름을 입력하세요"> <div class="field-error" th:errors="*{itemName}"> 상품명 오류 </div> controller @PostMapping("/add") public String addItemV3(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { log.info("objectName={}", bindingResult.getObjectName()); log.info("target={}", bindingResult.getTarget()); //검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", item.getItemName(), false, new String[]{"required.item.itemName"}, null, null)); } if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { bindingResult.addError(new FieldError("item", "price", item.getPrice(), false, new String[]{"range.item.price"}, new Object[]{1000, 1000000}, null)); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { bindingResult.addError(new FieldError("item", "quantity", item.getQuantity(), false, new String[]{"max.item.quantity"}, new Object[]{9999}, null)); } //특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.addError(new ObjectError("item", new String[]{"totalPriceMin"}, new Object[]{10000, resultPrice}, null)); } } //검증에 실패하면 다시 입력 폼으로 if (bindingResult.hasErrors()) { log.info("errors={}", bindingResult); return "validation/v2/addForm"; } //성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; } log 2024-06-26T10:44:00.155+09:00 INFO 22592 --- [nio-8081-exec-8] h.i.w.v.ValidationItemControllerV2 : target=Item(id=null, itemName=, price=null, quantity=null)상품 등록 창에서 전체 칸을 빈칸으로 넣어서 로그를 출력했을 때,id, price, quantity는 null이 들어갔는데 itemName는 null이 아니라 그냥 빈칸인가요??
-
미해결스프링 핵심 원리 - 기본편
request 스코프 예제 개발 내 웹어플리케이션 실행 안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요, 영한님, 항상 양질의 강의를 해주셔서 감사하고 있는 수강생 1인 입니다 ㅎㅎ스프링 핵심 원리 기본편을 수강하며 따라하던 중 해결이 안되는 문제가 발생에 문의드립니다.request 스코프 예제 강의 중웹 환경을 추가 하고 CoreApplication을 가동하면(아래 강의 내용 캡쳐 진행 중)아래와 같이 진행되면서 결국에 에러가 발생합니다.build.gradle에 추가한 web 라이브러리를 주석 처리하면 잘되는데, 포함시켜 실행시키면 위와 같이 진행됩니다.저는 회사에서 교육을 듣고 진행해서 그런 줄 알고 집에 와서 보안이 없는 환경에서도 진행해도 동일하네요 ㅠ영한님 또는 왜그런지 아시는분 답변 부탁드리겠습니다 ㅠ
-
미해결스프링 핵심 원리 - 기본편
localhost:8080 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.적용하고 실행하면 잘 나오는거 같은데웹페이지에서 실행하면안된다고 나옵니다. 버전은 지금 21로 다 맞춰서 했는데 오류가 납니다. 추가로 포트 9090으로 추가도 해서 열어봤는데 동일합니다.
-
미해결스프링 핵심 원리 - 고급편
빈 후처리기-적용 관련 질문
AppV1Config.class, AppV2Config.class를 BeanPostProcessorConfig 에서 주석처리하고아래와 같이 ProxyApplication 에서 import를 해도 정상 실행됩니다.맞는건가요? @Import({BeanPostProcessorConfig.class,AppV1Config.class, AppV2Config.class}) @SpringBootApplication(scanBasePackages = "hello.proxy.app") public class ProxyApplication { public static void main(String[] args) { SpringApplication.run(ProxyApplication.class, args); }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Session ID의 저장 위치는 어디인가요?
서버가 받은 요청의 JSESSIONID가 A12345이고, 서버 측 HTTP Session의 사용자 {username: "john123"}의 JSESSIONID가 A12345라고 가정하겠습니다. 그럼 A12345 == {username: "john123"}인데, A12345라는 세션ID 요청을 받았을 때 john123이라는 사용자에 대한 정보를 제공해야 합니다. 이때 서버에서 Session ID를 저장하는 곳은 어디인가요?그 클래스는 아래와 같은 작업을 수행할 것입니다. public void addSession(String sessionId, HttpSession session) { sessions.put(sessionId, session); } public HttpSession getSession(String sessionId) { return sessions.get(sessionId); }
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API 호출에 관해 질문드립니다 (내용보충)
안녕하세요. 현재 Rest Api로 백엔드 개발을 하고,View는 Html thymeleaf를 이용해 구현을 하려고 합니다. 리액트 등의 프레임워크를 사용하지 않는다면,@GetMapping으로 View단을 불러올 때,@RestController가 아닌 @Controller에서 불러와야하는데그렇다면 @RestController와 @Controller 둘 다 따로 만들어야 하는지 궁금합니다.예를 들어, 공지사항 전체 조회의 @RestController의 코드가// // 공지사항 전체 조회 // @GetMapping("/ypjs/board/notice/notices") // public Result findAll(@RequestParam int offset, @RequestParam int limit) { // List<Notice> noticeList = noticeService.findAll(offset,limit); // List<NoticeDto.NoticeApiDto> result = noticeList.stream() // .map(n -> new NoticeDto.NoticeApiDto(n.getNoticeId(), n.getNoticeTitle(), n.getNoticeContent(), // n.getNoticeCnt(), n.getNoticeDate(), n.getMember().getNickname())) // .collect(Collectors.toList()); // return new Result(result); // }라면,공지사항 전체 조회의 @Controller의 코드는이렇게 구현하면 되는건가요?+ 만약 이게 맞다면 @RestController의 GetMapping URL과 @Controller의 GetMapping URL이 겹치면 실행이 안되므로, @RestController의 URL을 /api/ypjs/board/notice/notices로 변경하면 될까요?그렇다면, 제 프로젝트에서 @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 남겨놔도 되는건지 궁금합니다..그리고 View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 쓰이는 방법인지가 궁금합니다.----------------------------------------------------------------------------------------------------------------(질문 요약)1. 리액트 같은 프레임워크 없이 프로젝트를 Rest Api로 개발할 때, 화면만을 위한 @Controller 클래스를 따로 만들어도 되나요? 만약 이 경우에 GetMapping URL이 겹치면 안되니까 @RestController의 URL엔 /api/를 추가해서 겹치지 않게 하는 식으로 하나요?2. 다른 부분은 rest api로 개발하고, View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 사용하는 방법인가요?3. 만약 화면을 위해 @Controller 클래스를 만드는게 좋은 방법이라면, @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 활용할 방법이 있을까요? + 남겨놔도 되는건가요?화면을 따로 개발하는 것이 아니라, 저처럼 같이 개발하는 경우 Rest api 개발을 하는것이 의미가 있는지 궁금합니다.Rest api 개발을 경험해보고 연습해보고싶어 백엔드단을 Rest api로 먼저 개발해서 완성하고, 프론트엔드는 프레임워크를 다루지 못해 html을 이용해 화면을 만들고 연결하는 식으로 했다!는 것이 Rest api로 프로젝트를 만드는 것에 대한 충분한 설명이 될 수 있을까요?
-
미해결스프링 부트 - 핵심 원리와 활용
webapps
인텔리제이로 말씀주신것처럼 배포하면왜 톰캣폴더의 webapps안에 아무것도 생성이 안될까요?그런데 프로젝트는 잘 실행됩니다..