묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
application.yml 설정하는 곳에러입니다
제 뭐가문제일까요? 제 mysql은 docker에 깔려있습니다
-
해결됨스프링 부트 웹 개발 입문 - 따라하며 배우기
mybatis 조회하기(7-2강) 실습시 오류가 발생합니다.
안녕하세요. 강의대로 실습한 후 실행시 오류가 발생해서 질문드립니다. 맥에서 실습중이기 때문에 하이디sql 사용이 불가하여 sequel pro로 대체하여 mariadb를 이용하고있는데, 이부분에서 연결이 잘못된 건지, 아니면 제가 실습을 따라가다 다른 실수가 있었던 건지 잘 모르겠습니다. 다른 분들께서 하신 질문들과 구글링 했을 때 제 생각에는 그래도 DB연결은 된 것 같은데 어떤 부분을 수정해야 할 지 도와주시면 감사하겠습니다. 오류 내용 : Invalid bound statement (not found): com.boot.sailing.v1.dao.MenuDao.doList [MenuCon]package com.boot.sailing.v1.controller; import com.boot.sailing.v1.service.MenuSvc; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller public class MenuCon { @Autowired MenuSvc menuSvc; @RequestMapping("/v1/menu") public String doMenu(Model model){ // Data 만들기 , List , Map List<Map<String, Object>> list = menuSvc.doList(); // Data 송부 model.addAttribute("list", list); model.addAttribute("hello", " ========== MenuCon ======== "); return "/v1/menu/menu"; } } [CoffeeMenu.xml]<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.boot.sailing.v1.dao.MenuDao"> <!-- 메뉴조회 --> <select id="doList" resultType="map"> SELECT no, coffee, kind, price, DATE_FORMAT(reg_day,"%Y, %m, %d") AS reg_day, DATE_FORMAT(mod_day,"%Y, %m, %d") AS mod_day FROM coffee_menu; </select> </mapper> [MenuSvc] package com.boot.sailing.v1.service; import com.boot.sailing.v1.dao.MenuDao; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service @Log4j2 public class MenuSvc { @Autowired MenuDao menuDao; public MenuSvc() { log.info("================ MenuSvc , 생성자 ==================="); } public List<Map<String, Object>> doList(){ List<Map<String, Object>> list = menuDao.doList(); log.info(list); return list; } } [application.yaml] spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://localhost:3306/boot username: boot password: boot --- # Configuration mybatis mybatis: mapper-locations: classpath:sqlmapper/**/*.xml [MenuDao]package com.boot.sailing.v1.dao; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; @Mapper public interface MenuDao { List<Map<String, Object>> doList(); }
-
미해결스프링 부트 - 핵심 원리와 활용
디스패처 서블릿과 스프링 컨테이너 연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의 내용대로 스프링 MVC 디스패처 서블릿을 생성한 후 스프링 컨테이너를 연결하려고 보니까 다음과 같이 오류가 뜹니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
배포후 사이트에 접속은 되는데 이후 과정이 안됩니다.
위험한 컨텐츠라그런지 localhost로 바뀌어버립니다.어떻게 하면 이 사이트의 서비스를 이용할 수 있을까요? 다 허용으로 바꾸었는데도 그럽니다 ㅠㅠ ++보니까 제가 url에 일일이 넣어주면 이동이 되는데 아니면 local host 로 변경이 됩니다 이유가 뭘까요> ㅠㅠ
-
미해결실습으로 배우는 선착순 이벤트 시스템
예제 프로젝트 상에서의 Kafka 사용시 궁금한점
강의 잘 듣고 있습니다. 질문사항이 두개 있습니다.1.4강의 [문제점] 영상에서 쿠폰생성 10000개 요청으로 인해 mysql이 1분에 100개의 insert가 가능하다고 가정할 시 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행' 된다고 하셨는데요.예제로 사용하신 Kafka 사용 예제에서는 Consumer 프로젝트도 어차피 API프로젝트와 같은 DB를 바라보고 있으므로, 어차피 Kafka를 사용하여도 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행'되지 않나요? 왜 여쭤보냐면, 강의 내에서 Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책을 Kafka로 사용하셔서 문의드립니다.2.5강의 [Consumer 사용하기] 영상을 보면 API 프로젝트 Consumer 프로젝트가 별개로 존재합니다.그러므로 API프로젝트의 테스트 케이스가 종료되어도 Consumer 프로젝트는 이미 Kafka로 100개의 데이터가 스트림으로 들어오는 상태이므로, 테스트케이스가 종료되어도(즉, API프로젝트가 종료되어도) Cunsumer 프로젝트는 종료가 되지 않은 상태이므로 100개의 쿠폰이 DB에 생성이 되어야 하는게 아닌지요?왜 여쭤보냐면, 강의 내에서는 API프로젝트가 종료되면 Consumer 프로젝트도 작업이 멈추는 현상이 있어서 문의드립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
error: cannot find symbol @Entity ^ symbol: class Entity
애플리케이션을 처음 실행하고 여러 파일에서 위 제목과 같은 오류가 납니다. 한 파일이 아니라 여러 파일에 걸쳐가며 저렇게 발생하는데 어떻게 해결해야 하나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
스프링부트 버전관련 질문
안녕하세요 멘토님! 프로젝트앱을 다운받아 열었더니 빌드후에 다음과 같이 오류가 나타납니다.. 전에 프로젝트를 3.xx버전으로 했어서 이 경우에 java 17이상만 가능하기 때문에 java11을 사용하지 못해 나는 오류인것 같은데 어떻게 진행하면 될까요? problem occurred configuring root project 'library-app'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.1 > No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.5' but: - Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 8 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a component, and its dependencies declared externally: - Incompatible because this component declares documentation and the consumer needed a library - Other compatible attributes: - Doesn't say anything about its target Java version (required compatibility with Java 8) - Doesn't say anything about its elements (required them packaged as a jar) - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 8 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 8 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'runtimeElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 8 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.5') - Variant 'sourcesElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a component, and its dependencies declared externally: - Incompatible because this component declares documentation and the consumer needed a library - Other compatible attributes: - Doesn't say anything about its target Java version (required compatibility with Java 8) - Doesn't say anything about its elements (required them packaged as a jar) - Doesn't say anything about org.gradle.plugin.api-version (required '7.5')
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
제 mysql 이 적용이 안되는 이유를 알아냈습니다.
연결이 위험하다면서 자꾸 제 local로 바뀌네요 전 여기서 해결하고싶은데 ... 어떻게 하면 다음페이지인 인덱스들도 접속 가능하게 할까요?? 그 url에서 http://localhost:8081/start.html 이런식으로 url 이 변경되며 화면이 전환되는 스타일인데 그게 안됩니다 ㅠㅠ
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
메서드명 컬러의 의미
강사님 화면을 보면addTwoNumbers, multiplyTwoNumbers 같은 메서드명 (메서드가 맞나요.. 제가 자바가 아직 서툴러서😅)이 노란색으로 표시되는데 저는 회색으로 표시됩니다.이거 글자 색에 어떤 의미가 따로 있나요? 그리고 터미널에도 강사님은 INFO나 WARN 같은 글자들이 컬러로 표시되는데저는 그냥 다 하얗게 보여서요. 강사님과 똑같이 세팅하려면 어떻게 해야 하나요?검색해서 settings에 있는 semantic highlighting 적용해 봤는데 똑같이 안되는 거 같아요
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
랜덤 포트를 사용하는 이유
안녕하세요! 너무 좋은 강의 잘 보고 있습니다. 감사합니다! 강의를 듣다가 궁금한 것이 생겼는데,굳이 ApiTest 라는 클래스를 따로 만들어서 랜덤 포트로 설정해준 이유는 무엇인가요?? 감사합니다.
-
해결됨실전! 스프링 데이터 JPA
강의 내용 중 testEntity 관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. @SpringBootTest @Transactional @Rollback(value = false) class MemberTest { @Autowired EntityManager em; @Test public void testEntity() { Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("member2", 20, teamA); Member member3 = new Member("member3", 30, teamB); Member member4 = new Member("member4", 40, teamB); em.persist(member1); em.persist(member2); em.persist(member3); em.persist(member4); em.flush(); em.clear(); List<Member> members = em.createQuery("select m from Member m join fetch m.team", Member.class) .getResultList(); assertThat(members.get(0).getTeam()).isEqualTo(teamA); } }제가 작성한 테스트 코드는 위와 같습니다. 발생한 에러는org.opentest4j.AssertionFailedError: expected: "Team(id=1, name=teamA) (Team@3ec52163)" but was: "Team(id=1, name=teamA) (Team@100d071)" Expected :Team(id=1, name=teamA) Actual :Team(id=1, name=teamA) 위와 같습니다. 하나의 트랜잭션 안에서는 엔티티의 식별자가 같은 경우 ==비교를 하였을때 true라고 알고 있습니다.따라서 저는 member1의 team(teamA)과 teamA를 isEqualTo로 비교하였을때 true가 나올것이라 예상하였지만 false가 나왔습니다. 에러 문구를 보면 객체 주소가 달라서 false가 나온것 같아 Team엔티티에 equalsAndHashCode 오버라이딩을 해주어도 false가 나옵니다.물론 em.flush(), em.clear()를 하지 않고 영속성 컨텍스트에서 조회를 해오면 true가 나오는데 왜 영속성 컨텍스트를 초기화하고 DB에서 데이터를 가져오면 식별자가 같아도 같은 트랜잭션 내에서 ==비교가 true가 나오지 않는지 궁금합니다!
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제이 테마?
안녕하세요. 강의 보면서 잘 따라가는 중인데요 인텔리제이 화면 모습이 강사님 화면이랑 좀 다른데혹시 테마가 달라서 그런 걸까요? 강사님 화면제 화면 아 그리고 강사님 화면 보면 "/add" 앞에 지구 모양이 생겨있는데 저는 이런게 안생겨요.. 이건 뭔가 설정을 해줘야하는건가요?그리고 지구 모양이 있는게 무슨 의미인가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
배포해서 서버접속하는것까지 성공하였습니다
다만 궁금한것이 데이터베이스에 든게 없어서 배포하고 올린다음에 다시 내리고 데이터베이스 mysql채우고 다시 nohup으로 올렸는데 반영이 안되더라고요 어떻게 반영시키나요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Test - application.yml 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. 강의를 따라 MemberRepositoryTest를 실행해도 h2데이터베이스에 Member테이블이 생성되지 않는 문제가 있었습니다. 강의를 여러번 돌려보고, 강의소스코드를 다운받아 실행해보아도 DB에 테이블이 생성되지 않았으며, 강의자료 pdf를 둘러보아도 해답이 없었습니다. 혹시나 하는 마음에 강의소스코드 중 test폴더 하위에 존재하는 application.yml을 확인하여 주석처리 된 것들을 다 해제하고 실행하니 그제야 h2DB에 member 테이블이 생성된 것을 확인하였습니다. 여기서 궁금한 점은 test파일을 실행할 때 test폴더 하위에 application.yml 파일이 존재해야하는지 입니다. 강의에서 강사님의 test폴더 아래 yml파일이 존재하지 않습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
또다시 서버 접속 질문입니다 ㅠ 죄송합니다
이번엔 인바운드에 –sgr-060b562a401b266118081TCP::/0launch-wizard-3 을 규칙으로 넣었더니 빠르게 연결이 안된다고 뜹니다 어떻게 해결하나요?? 재차 질문드려서죄송합니다 ㅠㅠ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
배포까자 완료하였는데 검색하여 서버에 접속할 수 가 없습니다.
배포도 했고 서버도 켰고 swap 설정도하고 인바운드 규칙도 다열고 했는데 서버에 접속하는 시간이 너무 오래걸려서 접속이 안됩나다ㅠㅠ왜그런걸까요?
-
미해결스프링 시큐리티
다중 필터 구현 시, antMatchers 사용
예제에서는 antMatcher('/admin/**') 이런식으로특정 url 하나만 지정을 했는데혹시 '/user/**' 도 같이 Match 시키고 싶은데antMatcher 는 1개만 처리해주는 것 같습니다.꼭 새로운 FilterChain 을 생성해서 설정해야하나요?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
안녕하세요 호돌맨님 예외처리2 에서 질문이 있습니다.
좋은 강의 정말 감사드립니다.호돌맨님 강의덕분에 기존에 공부했던 지식들 정리도 하고 더 좋은 설계가 어떤건지 잘 배우고 있습니다.제가 예외처리2 강의를 보고 컨트롤러 테스트를 하다가 게시글 작성 실패케이스에서 오류가 생겨서 질문드립니다. PostControllerPostCreatePostControllerTest글 작성 요청 시 제목, 내용 모두 null 인 케이스 테스트입니다.이 테스트에서 실패합니다.로그는 아래와 같습니다.응답 바디에도 아무것도 오지 않습니다.로그를 쫓아서 ErrorResponse 에 브레이크 포인트를 찍어봤습니다. ErrorResponse여기서 validation 이 null로 잡힙니다.PostControllerAdvice이쪽 ExceptionHandler 작성할 시점에 생성자에 validation 을 매개변수로 받지 않았을땐 오류가 발생하지 않았는데 validation 을 매개변수로 받고 나서 오류가 생기는거면 @Builder 가 ErrorResponse 의 validation 초기화를 무시하고 null 값으로 생기는 현상 같습니다.그래서 따로 빌더 안붙인 validation 을 받지 않는 생성자를 만드니 잘 돌아갑니다.그런데 강의 마지막에 전체 테스트 한번 돌리고 마무리 하신것 같은데 호돌맨님은 어떻게 테스트 실패가 안뜬건지 궁금합니다. 그리고 혹시 더 좋은 방법이 있는지 방향을 알려주시면 감사하겠습니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Lazy 로딩 , FetchJoin 그리고 @BatchSize
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]공부를 하면서 제가 생각하는 부분이 맞는지 확인차 질문 드립니다. 모든 XToOne 은 fetch:Lazy로 되어있다는 가정Member와 Order는 양방향 참조Member를 사용할 때 Order는 가끔 사용되는경우Lazy 로 하고 Order를 사용할 때 마다 쿼리 나감자주 사용되는 경우패치조인을 사용해서 한번에 같이 불러온다.컬렉션인 경우XToOne은 패치 조인 하고 @BatchSize를 사용해서 페이징 및 최적화 까지 챙긴다 제 생각으론 동작방법만 제대로 알고 있으면 실무에서는default_batch_fetch_size 는 계속 등록해서 글로벌로 사용하면 좋아보이는데 그게 맞나요 ?
-
미해결스프링 시큐리티
커스텀 필터 등록 시, ApplicationFilterChain 에 등록
안녕하세요 강의 잘 듣고 있습니다! SecurityConfig에서 커스텀 필터 등록 시 @Bean 형식으로 필터객체를 생성하여 등록하면 ApplicationFilterChain에 등록되는게 맞는걸까요? Bean 만 선언한다면 ApplicationFilterChain 에 등록되고addFilter(customFilter) 를 추가해주면 ApplicationFilterChain 리스트에도 등록되고SecurityFilterChain 에도 등록이 됩니다.문제는 제가 만든 커스텀 필터는, 특정 URL 에서는 동작 안하게끔 구현하고 싶은데@Bean으로 등록했기 때문에 ApplicationFilterChain에 등록되어 어떤 요청이 들어오든 동작하는 게 문제입니다. @Bean 방식이 아닌addFilter(New CustomFilter()) 로 하면 SecurityFilterChain에만 등록되긴 하는데 CustomFilter 는 스프링 컨테이너에 등록이 안되기 때문에 다른 Resource 객체들을 주입받지 못하는 상황입니다.결론은 ApplicationFilterChain에는 추가 안하고 SecurityFilterChain에만 커스텀 필터를 추가하고 싶은데 New 방식 말고는 없는 것인지가 궁금합니다!