묻고 답해요
144만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
서비스테스트,리포지터리 테스트 따로 만드는 이유?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제목그대로요 어떤차이가 있고, 현업에서도 그러는지 궁금합니다.
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
재생이 안되요
폰에서 영상 실행이 안되요 일부 다른 강의도 재생에 뮨제가 생겼다고 나오면서 영상이 안나와요강의 자체 문제보다는 시스템 문제 같아요다른 강의 중에 정상 실행돠는것도 있어요일부 강의만 안나와요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필드 validation 관련 질문드립니다.
상황에 따라 검증 조건들이 다를 수 있기 때문에 dto 객체들을 분리하는 것은 잘 이해했습니다.여기서 하나 궁금한 점이 만약 JPA를 같이 사용할 때에도 똑같이 코드를 작성하면 될까요?entity 클래스에 적용된 조건들이 그대로 테이블 생성에 반영되는 것으로 기억하는데entity 클래스에는 조건들을 빼고 다른 dto 객체들에만 제약을 걸면 될지, 아니면 테이블 생성 자체와 관련이 있으므로 entity 클래스 내부 필드들에 직접 조건을 걸어야 하는 게 맞는지질문 드리고 싶습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
실시간으로 로거 레벨을 바꾸는 기능
[질문 내용]1. 실시간으로 로그 레벨을 바꾸는 게 굉장히 신기한데 어떤 원리로 저게 가능한건가요? 강의에 나온 것처럼 POST 방식으로 보내서 로그 레벨 변경이 가능하다면 보안에 취약할 수도 있을 것 같다는 생각이 드는데(서비스를 운영하는 입장에서는 원치 않은 동작일 수도 있음) 보안을 강화하는 방법은 어떤 것이 있을까요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
인텔리제이 무료버전 사용중입니다. 프로젝트 생성 시
이렇게 안뜨고이렇게 떠 있는데 어떻게 프로젝트를 생성해야하는지 모르겠습니다 ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
파일들이 주황색 글씨로 떠요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 지피티에 검사해서 나오는 방법을 모두 다 해보았습니다. Gradle 프로젝트 리로드, 캐시 무효화, 프로젝트 SDK 재설정, 소스 루트 설정 확인, Gradle 빌드 툴 설정 확인 등등 모두 다 해보았지만, 여전히 저 파일들이 주황색 글씨로 뜹니다.
-
미해결[인프런 X VMware Tanzu] Spring Boot 밋업 with Josh Long
?
?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JpaMemberRepository를 만드는 이유?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제목그대로요 MemoryRepository, MemoryMemberRepository 정도로 만들고 끝내느게 아니라 EntityManger 활용하는 JpaRepsitory까지 만드는 이유가 뭔가요? 프로젝트 마다 다 다르겠지만 어떤 프로젝트는 심지어 서비스 없는 프로젝트까지 있더라고요. 있고 없고의 차이가 뭔지 궁금하네요
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
scanbasepackages 관련 질문입니다.
위 설명에 대한 의문이 들어서 질문드립니다. @SpringBootApplication(scanBasePackages = "hello.itemservice.web")위와 같이 하지 않고@SpringBootApplication이렇게만 해도 실행되는데는 문제가 없는데굳이 넣는 이유가 뭔지 궁금합니다. 혹시 성능과도 연관이 있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-232] 90149/90149
test 랑 jpashop말고 다른 db를 만들어보려고 하는데,Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-232] 90149/90149이 에러가 뜨고 만들어지지 않는데 어떻게 해야 하나요? test 랑 jpashop접속은 되지만 새로운 db 생성이 안됩니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findOne 메서드의 이름에 대하여
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 메서드 이름을 보던 중 의문이 생겨 이렇게 질문을 남깁니다. 서비스에서 findOne 메서드의 이름도 findById라고 하면 비록 리포지토리랑 이름이 겹치긴 해도 더 명확하고 좋을 거 같은데, 혹시 findOne이라고 짓는 특별한 이유가 있을까요? 강의에서 말씀하신 '서비스는 비즈니스에 가깝게 이름을 지어야 한다'는 내용과 관련된 것인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA오류
[질문 내용]JPA 테스트 코드 오류============================CONDITIONS EVALUATION REPORT============================Positive matches:----------------- AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition) AopAutoConfiguration.AspectJAutoProxyingConfiguration matched: - @ConditionalOnClass found required class 'org.aspectj.weaver.Advice' (OnClassCondition) AopAutoConfiguration.AspectJAutoProxyingConfiguration.CglibAutoProxyConfiguration matched: - @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition) ApplicationAvailabilityAutoConfiguration#applicationAvailability matched: - @ConditionalOnMissingBean (types: org.springframework.boot.availability.ApplicationAvailability; SearchStrategy: all) did not find any beans (OnBeanCondition) DataSourceAutoConfiguration matched: - @ConditionalOnClass found required classes 'javax.sql.DataSource', 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType' (OnClassCondition) - @ConditionalOnMissingBean (types: io.r2dbc.spi.ConnectionFactory; SearchStrategy: all) did not find any beans (OnBeanCondition) DataSourceAutoConfiguration.PooledDataSourceConfiguration matched: - AnyNestedCondition 1 matched 1 did not; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.PooledDataSourceAvailable PooledDataSource found supported DataSource; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.ExplicitType @ConditionalOnProperty (spring.datasource.type) did not find property 'type' (DataSourceAutoConfiguration.PooledDataSourceCondition) - @ConditionalOnMissingBean (types: javax.sql.DataSource,javax.sql.XADataSource; SearchStrategy: all) did not find any beans (OnBeanCondition)JPA코드를 작성하고 통합 테스트 코드를 작성하니 이와같은 오류가 뜹니다! 테스트 코드는 package hello.hello_spring.service; import hello.hello_spring.domain.Member; import hello.hello_spring.repository.MemberRepository; import jakarta.transaction.Transactional; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @SpringBootTest @Transactional class MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //Given Member member = new Member(); member.setName("hello"); //When Long saveId = memberService.join(member); //Then Member findMember = memberRepository.findById(saveId).get(); assertEquals(member.getName(), findMember.getName()); } @Test public void 중복_회원_예외() throws Exception { //Given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //When memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));//예외가 발생해야 한다. assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } }이렇게 되어있습니다!
-
미해결스프링 부트 - 핵심 원리와 활용
actuator 경로 질문
만약 컨트롤러를 설정할 때 actuator 경로를 쓰고 싶다면 어떻게 해야되는건가요?제가 테스트를 해보니 @Getmapping(/actuator) 했을 때 제가 설정한 컨트롤러를 타지 않고, 강의에서 알려주시는 액츄에이터 웹이 나오는 것을 확인했습니다.
-
미해결스프링 핵심 원리 - 기본편
aop 초기화 시점과 초기화 콜백 시점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 스프링 완전 정복 로드맵과 JPA 로드맵까지 전부 끝내고 개인 프젝 전에 복습을 하고 있습니다 확실히 전체 로드맵을 다 돌고 다시 보니까 아는 게 많아져서 그런지 더 재미있네요다름이 아니라 라이프 사이클을 복습하면서 스프링 aop 프록시 생성 시점과 콜백 시점은 정확히 언제일까? 먼가 먼저일까? 라는 궁금증이 생겼습니다그래서 개인적으로 테스트를 해보고 정리해 봤는데 아래 내용이 맞는지 읽어주시면 감사하겠습니다 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 ->postProcessBeforeInitialization -> 초기화 콜백 ->postProcessAfterInitialization ->소멸전 콜백 -> 스프링 종료직접 포스트 프로세서를 구현하고 ProxyFactory 사용해서 대체하니까포스트 프로세서의 어떤 메소드를 구현하냐고 프록시를 적용하냐에 따라서 콜백 메소드에 AOP 적용이 달라지더라구요초기화 콜백 이전에 AOP를 적용하면 초기화 콜백에도 부가 로그가 찍히고초기화 콜백 이후에 AOP를 적용하면 초기화 콜백에는 부가 로직이 안 찍히는걸 확인했습니다커스텀 말고 @Aspect를 통해서 적용하니까 콜백 메소드에 부가 로그가 안 찍히는걸로 봐서는 스프링 AOP는 postProcessAfterInitialization 메소드를 구현하는 걸로 추측해 봤습니다 감사합니다
-
미해결스프링 핵심 원리 - 고급편
@AfterReturning 설명 중 객체의 변경과 조작의 차이점
강의 18분 40초쯤 @AfterReturning 설명 중 반환되는 객체를 조작할 수는 있으나 변경할 수는 없다라고 말씀하셨는데 조작의 예시로 setter를 들어주시기는 했으나 setter를 통해 값을 변경하는 것도 결국 변경이 아닌가 생각이 들기도 하고 조작과 변경의 차이가 잘 이해되지 않습니다.조작과 변경의 차이를 조금 더 구체적이고 정확한 예시와 의미를 통해 이해시켜주실 수 있으실까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
GetMapping 경로 설정
프로젝트를 따로 만들면서 강의 들었던 내용을 참고하면서 혼자 해보는중입니다.근데 컨트롤러 경로 설정할때 /add 는 어디에도 없는데 왜 경로를 그렇게 했는지 궁금해서 작성합니다.컨트롤러 최상위는@Controller @RequestMapping("/basic/items") @RequiredArgsConstructor내부 컨트롤러는 @GetMapping("/add") public String addForm() { return "basic/addForm"; }html 경로는/resources/templates/basic/addForm.html `인데add 의 의미가 요청/응답 가상의 이름인지 아니면 제가 못찾은 경로의 이름인지 궁금합니다.
-
해결됨코드로 배우는 스프링 웹 프로젝트 - Basic
섹션5 파라미터 수집과 변환에서 시차 문의
강의4에서 강의5로 넘어오면SampleController.java에 작성하지 않았던 코드가 작성되어 있습니다. 강의에서 보여지던 git 주소와실제 git에서 검색되는 레파지토리 이름이 다름.spring2024_template 인가 싶어서 보면이것도 브런치 ch03, ch07 두개 뿐인데그나마도 강의에서 보여주는 소스코드와 다릅니다. 교재와 강의와 git이 모두일관성이 없어서 따라가기가 벅차네요.강의 찍으신 거 그대로 실습해보시고 올리시는 게 맞나요 ??강의초기에 미리 만들어둔 JSP 파일이 없어서 에러나는 부분 컨트롤러 소스 주석 푸실 때 언급이라도 해주시면 좋겠습니다. 강의 마칠 때(9:22) 즈음 되어서에러나는 게 정상입니다. 라고 하시면 1~4강 강의 진행 하다가 갑자기 5강 강의 초반에 에러 떠서 이것저것 확인해보고 하느라 시간 잡아먹게 되네요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
settings > plugins > marketplace : 수업영상의 lombok 와 명칭 똑같은게 없어요.
[질문 내용]강의 7:50 에 나오는 내용에서settings > plugins > marketplace : 수업영상의 lombok 을 설치하라고 나오는데,수업영상에 나오는것과 달리 지금은 lombok과 명칭이 일치하는게 없습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build 시 jdk 깔았음에도 java installations does not exist 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 정말 하다 하다 안돼서 질문 남깁니다.. 공부하고 싶어요 도와주세요 ㅠㅠㅠㅠ 1 ) build 시 jdk 깔았음에도 java installations does not exist 에러예전에 jdk11썼었는데 학기끝나고 다시 공부하려고 보니 17로 바꾸라고 해서 jdk:17 / springBoot: 3 설정했는데 아래 첨부드린것 과 같은 에러가 나요.. 17로 바꿨음에도 불구하고 gradle 이 11을 찾는 것 같아보이는데(?) 왜 그런걸까요? ( 안쓰는 버전들의 jdk를 좀 지우긴 했어요..)1-1 )Gradle 사용자 홈 설정에서 path를 설정하는데, gradle파일이C:\Users\이름\.gradleC:\JavaSpring\hello-spring\gradle이렇게 두 개 존재하는 것 같은데 어떤걸로 해야 하는 건가요 ?제일 처음에 Gradle 사용자 홈 설정은 C:\JavaSpring\hello-spring\gradle 으로 되어있어서 이게 문제일까 싶어서 바꿨는데 어떤경로가 맞는건가요..? <에러화면><각종 설정 화면> templates/index.html -localhost:8080/hello 안뜸.. 2번은 해결했습니다. 1번은 아직이에요 ㅠㅠㅠㅠ
-
미해결스프링 시큐리티 OAuth2
스프링 부트 3버전으로 따라가시는 분들 참고하세요
build.gradle에서implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' 가 아닌 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.3.RELEASE' 으로의존성을 설정해야 합니다. 스프링 부트 3버전부터는 타임리프 엑스트라에서 5가 아닌 6만 인식하여 동작하므로 5로 설정하면 인증 동작에 오류가 생겨서 아무리 빌드를 다시해도 isAuthentication()이 동작하지 않으니 logout이 안 사라집니다.