묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한강사님 스프링 강의 로드맵 질문드려요.
안녕하세요.저는 얼마전에 미국에서 컴퓨터 과학을 전공한 사람입니다.자바에 대한 기본적인 이용은 할줄 아는 상태이구요. 앞으로 한 2달뒤에 취업을 해야하는데요. 자바 백엔드 신입으로 취직하기 위해 들어야 하는 최소 정도를 알고 싶어서요. 김영한 강사님이 보시기에 자바 백엔드 신입으로 일하는데 최소한 역량을 갖추려면 어떤 강의들을 들어야 하죠? 최소한이요.항상 존경합니다. 김영한 강사님.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
등록 폼, 수정 폼에 bootstrap.min.css가 적용되지 않는 것 같습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]등록 폼, 수정 폼에 bootstrap.min.css가 일부 적용되지 않는 것 같습니다.정적 리소스와 뷰 템플릿 둘 다 아래 사진과 같이 일부 css가 적용되지 않아서 질문 드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Package폴더를 못 찾겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]hello.hellospring 폴더 내부에서 controller 패캐지를 만들려고 똑같이 단축키를 입력해 검색을 했는데 package는 없고 package.json폴더만 있습니다. 어떻게 해결해야될까요 자바는 21버전 사용중이고 스프링은 3.2.4버전 사용중입니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의에서 다른 타입이 바인딩 되면 자동으로 FieldError 생성해서 BindingResult에 넣는다고 이해했는데요 이걸 타임리프에서 어떤 부분이 출력을 해주는 건가요? 강의 뒤쪽보니까 th:field가 오류있으면 자동으로 보관된 값 출력해준다고 해서 th:field를 지우면 오류 표시가 안되나? 하고 지워봤는데 그대로 동작하더라고요 이유가 뭘까요 다른 타입을 매핑하면 화면에 오류메시지가 다른 타입이 바인딩 되었다는 메시지랑 저희가 BindingResult에 넣은 "가격은 1,000~1,000,000 까지 허용됩니다."메시지도 같이 출력되더라고요 그런데 저 메시지는 if문으로 판별해서 null이 거나 1000보다 작거나 1000000보다 크면 넣어주는데 필드가 다른 타입이면 if문이 작동하지 않을 것 같은데 왜 FieldError가 넣어지는 거죠?
-
해결됨스프링 핵심 원리 - 기본편
수동 빈 등록 VS 자동 빈 등록
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수동 빈 등록 VS 자동 빈 등록을 테스트 하던 과정 속에의문점이 생겨서 질문 드립니다!AutoAppConfig를 설정 정보로 스프링 컨테이너에 넘기면1. @CompoentScan으로 @Compoent가 붙은스프링 빈들이 컨테이너에 등록 생성자 주입을 하고 있으니DI가 필요한 클래스들은 스프링 빈 등록과 동시에 DI이때 MemoryMemberRepository는memoryMemberRepository라는 이름으로 빈 등록2. AutoAppConfig에서 팩토리 메서드 방식으로수동 스프링 빈 등록 과정 진행 이때 이름을 memberRepository2 , memberRepositorymemoryMemberRepository이렇게 3번 메서드 이름을 바꿔서 진행했습니다.처음 memberRepository2로 실행했을 때는expected single matching bean but found 2: memoryMemberRepository, memberRepository2이런 에러가 발생했습니다.memberRepository와 memoryMemberRepository는에러 발생 x 수동 설정에서 생성한 객체가 사용된다는우선순위 테스트까지 완료memoryMemberRepository는 오버라이딩 된 상태memberRepository는 2개의 MemoryMemberRepository의 인스턴스가 있는 상태테스트 결과에 생기는 의문점은 자동 빈 등록 vs 자동 빈 등록에서는 이름이 같으면 에러가 발생하는데메서드 이름을 동일하게 하면 오버라이딩 된 상태로 스프링 빈에 등록 메서드 이름을 아예 다르게 하면 에러 발생이름을 부모 타입으로 캐멀 케이스를 지켜서 이름을 하면각각 다른 이름으로 같은 타입의 스프링 빈 생성왜 이런 결과가 나오는 걸까요?전부 오버라이딩 설정은 false로 진행했습니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jsonignore와 지연로딩?
[섹션3 - 간단한 주문조회 V1 엔티티를 직접 노출] 강의에서[6:09] 처음에 api를 호출했을때는 양방향 연관관계 때문에 무한루프가 발생하였는데요, 이때는 지연로딩에 의한 이슈가 없었는데[11:07] JsonIgnore를 추가하여 순환 참조가 되는 상황을 제거했을때는 왜 지연로딩에 의한 이슈가 생기는 건가요??잘 동작하던 프록시객체가 JsonIgnore가 생겼다고 에러가 나는 상황이 잘 이해가 안되어 질문을 올립니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
섹션 4 - 회원 기능 테스트 강의에서 중복_회원_예외()메서드를 실행할 때 INSERT 쿼리가 실행되는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]package jpabook.jpashop.service;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.annotation.Rollback;import org.springframework.transaction.annotation.Transactional;import jpabook.jpashop.domain.Member;@SpringBootTest@Transactionalpublic class MemberServiceTest { @Autowired private jpabook.jpashop.repository.MemberRepository memberRepository; @Autowired private MemberService memberService;// @Test//// @Rollback(false)// public void 회원가입() throws Exception {// // given// Member member = new Member();// member.setName("kim");// // // when// Long savedId = memberService.join(member);// // // then// Assertions.assertThat(member).isEqualTo(memberRepository.findOne(savedId));// } @Test// @Rollback(false) public void 중복_회원_예외() throws Exception { // given Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); // when memberService.join(member1); try { memberService.join(member2); } catch (IllegalStateException e) { return; } // then Assertions.fail("예외가 발생해야 한다."); }}저는 JUnit5를 사용헀기 때문에 위와 같이 코드를 작성했는데요주석 처리한 회원가입() 메서드를 실행할 때는 강사님처럼 INSERT 쿼리가 실행되지 않는 것을 확인했지만, 중복_회원_예외() 메서드를 실행할 때는 INSERT 쿼리가 실행되는 것을 확인했습니다.2024-04-02T00:01:22.883+09:00 DEBUG 26044 --- [jpashop] [ main] org.hibernate.SQL :insertintomember(city, street, zipcode, name, member_id)values(?, ?, ?, ?, ?)2024-04-02T00:01:22.885+09:00 TRACE 26044 --- [jpashop] [ main] org.hibernate.orm.jdbc.bind : binding parameter (1:VARCHAR) <- [null]2024-04-02T00:01:22.885+09:00 TRACE 26044 --- [jpashop] [ main] org.hibernate.orm.jdbc.bind : binding parameter (2:VARCHAR) <- [null]2024-04-02T00:01:22.885+09:00 TRACE 26044 --- [jpashop] [ main] org.hibernate.orm.jdbc.bind : binding parameter (3:VARCHAR) <- [null]2024-04-02T00:01:22.885+09:00 TRACE 26044 --- [jpashop] [ main] org.hibernate.orm.jdbc.bind : binding parameter (4:VARCHAR) <- [kim]2024-04-02T00:01:22.885+09:00 TRACE 26044 --- [jpashop] [ main] org.hibernate.orm.jdbc.bind : binding parameter (5:BIGINT) <- [1]2024-04-02T00:01:22.886+09:00 INFO 26044 --- [jpashop] [ main] p6spy : #1711983682886 | took 0ms | statement | connection 4| url jdbc:h2:tcp://localhost/~/jpashopinsert into member (city,street,zipcode,name,member_id) values (?,?,?,?,?)insert into member (city,street,zipcode,name,member_id) values (NULL,NULL,NULL,'kim',1);위 로그는 해당 로그인데 혹시 이유를 알 수 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
ac.getBean 관련 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.MemberService memberService = ac.getBean("memberService", MemberService.class);MemberService memberService = ac.getBean(MemberService.class);이 두 코드엔 무슨 차이가 있는 건가요?위의 코드로 AutoAppConfigTest를 실행하면 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'memberService' available 오류가 뜨고, 아래의 코드로 같은 테스트를 실행하면 통과합니다.
-
해결됨스프링 핵심 원리 - 고급편
var 사용에 관한 김영한 선생님의 생각이 몹시 궁금합니다
[질문 내용]안녕하세요 스프링부트 프로젝트를 진행중입니다. 김영한님께서는 var를 자주 쓰는 편인지 궁금합니다. 사실 저는 매우 코드 리뷰할 때 불편하다고 생각하는데 회사에서는 어떤가요? 물론 Intellij 에서 setting 변경을 해주면 옆에 hint로 나오긴 하지만 기업에서는 이런 걸 허용하는지 궁금합니다 감사합니다
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
PPT에 오타가 존재하는 것 같습니다.
2강 커넥션 풀과 데이터 소스 챕터에서11 페이지의 상단에 이부분... 쓰레드 풀이 아니라 커넥션 풀 아닌가요?쓰레드 풀은 지금 내용이 아닌거 같아요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Unsupported Gradle. The project uses Gradle version which is incompatible with IntelliJ IDEA 2023.3.6.
전에는 문제 없이 잘 실행됐는데 이런 오류가 발생합니다. 솔루션을 보니 Gradle version 3.0 이상 업그레이드 하라고 되어있는데 이미 3.0이상인데 오류가 나는지 모르겠습니다.
-
미해결스프링 핵심 원리 - 기본편
싱글톤 컨테이너 섹션 중 5강
안녕하세요, 현재 섹션5 중 5강을 듣고 있습니다. 싱글톤 테스트 하던 도중 memberRepository 란 빈이 등록 되지 않았다는 오류가 발생했더라구요. 어디서 에러 생긴건지 알 수 있을까요? 아래는 제 깃입니다.https://github.com/bukwon/core
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
localhost:8080/template/layout 호출시 Whitelabel Error가 뜹니다.
(TemplateController)(base.html)(layoutMain.html)(에러화면) 왜 오류가 뜨는지 잘 모르겠습니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
에러코드 필터 , 인터셉터, AOP 선택
강의 수강 후 제 프로젝트에 AOP 로직을 적용해 보았습니다. 에러코드를 AOP를 빼서 모듈별로 적용했는데 에러코드의 경우 필터나 인터셉터로는 안되는 것일까요? 어떤 기준으로 공통 사용 부분을 필터, 인터셉터, AOP로 나눠서 각각 적용해야할지 모르겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2024-04-01T15:54:52.319+09:00 ERROR 11136 --- [ restartedMain] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'initDb': Invocation of init method failed . . .Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.delivery -> jpabook.jpashop.domain.Delivery . . .Caused by: java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.delivery -> jpabook.jpashop.domain.Delivery . . .Caused by: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.delivery -> jpabook.jpashop.domain.Delivery at org.hibernate.engine.spi.CascadingActions$8.noCascade(CascadingActions.java:372) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:173) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.event.internal.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:161) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:144) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:79) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1403) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] ... 44 common frames omittedDeprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.6/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.delivery -> jpabook.jpashop.domain.DeliveryCaused by: java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.delivery -> jpabook.jpashop.domain.DeliveryCaused by: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.delivery -> jpabook.jpashop.domain.Delivery 에러메시지가 위와 같이 떠서 구글에서 해결방법들을 찾아서 해봤는데 다 해결되지 않았습니다 ㅠㅠ 혹시 어떻게 해야할까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
빌드 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]빌드 오류가 있습니다. 자바 17로 설정했는데 오류가 고쳐지지 않네요ㅠ오전 9:18:37: Executing ':ServletApplication.main()'...Starting Gradle Daemon...Gradle Daemon started in 2 s 784 msFAILURE: Build failed with an exception.* Where:Initialization script 'C:\Users\Sam's\AppData\Local\Temp\ServletApplication_main__1.gradle' line: 6* What went wrong:Could not compile initialization script 'C:\Users\Sam's\AppData\Local\Temp\ServletApplication_main__1.gradle'.> startup failed: initialization script 'C:\Users\Sam's\AppData\Local\Temp\ServletApplication_main__1.gradle': 6: Unexpected character: '\'' @ line 6, column 86. tudy/springmvc/servlet/servlet') ^ 1 error* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.BUILD FAILED in 6s오전 9:18:47: Execution finished ':ServletApplication.main()'.
-
미해결스프링 핵심 원리 - 기본편
Map, List로 빈 조회 시 질문
안녕하세요 AllBeanTest에서 List랑 Map으로 AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); 여기서 FixDiscountPolicy랑 RateDiscountPolicy를 어떻게 스프링빈으로 등록하는지 이해가 되지않습니다. 4강 스프링 빈 조회 - 동일한 타입이 둘 이상 에서 동일한 타입의 스프링빈이 두개 이상일시 에러가 발생하고, 이를 방지하기위해 빈 이름을 지정하는걸로 나와있는데 어떻게 두개를 같이가져와 map. list에 저장 할 수 있는건가요? 그리고 rateDiscountPolicy에 @MainDiscountPolicy 어노테이션이 설정되있으면 FixDIscountpolicy대신 RateDiscountPolicy만 우선으로 가져오는걸로 이해를 햇었는데 제 생각이 어디가 잘못된건지 이해가 되지않습니다. ㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
basic-objects 에 관해 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강사님의 HTML 코드, Java 코드 모두 복붙하여 진행하였는데, White Label 이 나옵니다.이 부분에서 #을 빼서 바로 받는 부분에 오류가 발생하는데, 왜 그런걸까요?? 제가 오타를 쳤을 까봐 코드도 강사님 것을 복붙 하였는데도 같은 오류가 납니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요 RequestParam 생략 질문있습니다.
안녕하세요 MVC 1편을 수강 중입니다. 강의에서는 파라미터와 이름이 같으면 생략이 가능하다고 하는데,저는 그 지점이 잘 안되는 것 같아요. 코드랑 오류 올리겠습니다 ㅠ 어디가 문제인지 찾아주시면 감사하겠습니다.package hello.springmvc.basic.request; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.io.IOException; @Controller @Slf4j public class RequestParamController { @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); log.info("username={}, age={}", username,age); response.getWriter().write("ok"); } @ResponseBody @RequestMapping("/request-param-v2") public String requestParamV2(@RequestParam("username") String memberName, @RequestParam("age") int memberAge ) { log.info("username={}, age={}", memberName,memberAge); return "ok"; } @ResponseBody @RequestMapping("/request-param-v3") public String requestParamV3(@RequestParam String username, @RequestParam int age ) { log.info("username={}, age={}", username,age); return "ok"; } @ResponseBody @RequestMapping("/request-param-v4") public String requestParamV4(String username, int age) { log.info("username={}, age={}", username,age); return "ok"; } @ResponseBody @RequestMapping("/request-param-required") public String requestParamRequired(@RequestParam(required = false) String username, @RequestParam(required = false) int age) { log.info("username={}, age={}", username,age); return "ok"; } @ResponseBody @RequestMapping("/request-param-default") public String requestParamDefault(@RequestParam(required = false, defaultValue = "guest") String username, @RequestParam(required = false, defaultValue = "-1") int age) { log.info("username={}, age={}", username,age); return "ok"; } }java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.
-
미해결스프링 부트 - 핵심 원리와 활용
설정 데이터1 외부파일 질문이요.
gradlew clean build를 하여 jar파일을 만든 후~/build/libs/ 에 application.properties 만들고url, username, password 키 값 형식으로 강의처럼 입력했습니다.그러데 윈도우 같은경우 username값을 찍어보면 제 윈도우계정이 찍히는게 OS 쪽이 우선순위가 높아서 파라미터 곂칠때 그게 먼저 찍히는건가여?전 영상처럼 dev2_user가 안찍히고, 윈도우계정이 찍히네요.현재는 윈도우에서 set 으로 확인시 환경변수의 username과 곂치고 있습니다. 좁은 범위가 먼저 적용되야한다 라는 규칙이랑 다른거 같아서 OS환경변수가 넓은범위라고 한다면, 프로퍼티 파일 적용은 좁은 범위 아닌가 해서 여쭤봅니다.