묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 고급편
런타임 시점의 정확한 의미는?2개?한개?
1. CGLIB에서 말하는 런타임의 정확한 시점이 궁금한데? 프록시를 생성하고 바이트 코드를 조작하는 그 시점이 런타임 이다 라고 하는게 맞나요? 스프링이 빈을 컨테이너에 등록하기 이전에 프록시를 생성해서 빈으로 등록하는 그 시점을 런타임이라고 하는거죠?2. AOP 적용 방식 3가지 중 마지막 런타임시점에 대해여기서 스프링이 쓰는 AOP도 결국 CGLIB인데 그러면 여기서 말하는 런타임의 정확한 의미도 1번과 동일한 시점을 얘기하는건가요?아니면 실제 객체의 메소드를 호출하는 그 시점을 런타임 이라고 얘기하는건가요? 아니면 둘다인가요?
-
미해결스프링 핵심 원리 - 고급편
위빙
위빙이 AOP 적용을 위해 애스펙트를 객체에 연결한 상태라고 하셨는데객체는 실제 타겟 객체이지요?스프링 AOP 는 런타임시점에, 컨테이너 로딩시점에, 프록시 생성시점에 위빙을 한다라고 하셨는데위빙이란게 결국 아래 코드 부분의 부가기능이 타겟 객체 호출(joinPoint.proceed) 앞뒤로 만들어주는걸(프록시 객체를 생성하는 시점에서 바이트 코드를 조작해서 심어줌)말씀하시는건가요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
Redis만 사용하면 인증 상태 영속이 되지 않습니다..!
안녕하세요 구버전에 이어 신버전 강의도 출시해주셔서 감사합니다! 구버전 커뮤니티에 질문올렸었는데요~이번 강의를 봐도 해결이 되지않아서 질문 올려봅니답..!직접 spring security 메인테이너나 컨트리뷰터들한테도 물어봤는데, 제가 제대로 질문을 못해서인지 해결을 못했는데요. 시큐리티 + formlogin + Redis를 활용해서 인증방식을 구현했습니다. 아래 코드로 인증 객체를 꺼낼때 문제가 발생합니다. @ResponseStatus(HttpStatus.OK) @GetMapping("/test") public void test() { SecurityContextHolderStrategy contextHolderStrategy = SecurityContextHolder.getContextHolderStrategy(); System.out.println(">> contextHolderStrategy : " + contextHolderStrategy); // org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy@7e1fbf12 SecurityContext context = contextHolderStrategy.getContext(); System.out.println(">> context : " + context); // SecurityContextImpl [Authentication=AnonymousAuthenticationToken Authentication authentication = context.getAuthentication(); System.out.println(">> authentication : " + authentication); // AnonymousAuthenticationToken MemberContext memberContext = (MemberContext) authentication.getPrincipal(); System.out.println(">> memberContext : " + memberContext); // ClassCastException String username = memberContext.getUsername(); System.out.println(">> username : " + username); } Redis를 사용하지 않고 tomcat에 저장할 경우 session을 통해서 인증 객체를 잘 받아오는데,>> contextHolderStrategy : org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy@54f61d2b >> context : SecurityContextImpl [Authentication=UsernamePasswordAuthenticationToken [Principal=com.spring.security.config.security.service.MemberContext [Username=sejinpark@email.com, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=A220DB3D8904393F7D9831276564566A], Granted Authorities=[ROLE_ADMIN]]] >> authentication : UsernamePasswordAuthenticationToken [Principal=com.spring.security.config.security.service.MemberContext [Username=sejinpark@email.com, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=A220DB3D8904393F7D9831276564566A], Granted Authorities=[ROLE_ADMIN]] >> memberContext : com.spring.security.config.security.service.MemberContext [Username=sejinpark@email.com, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]] >> username : sejinpark@email.com Redis만 사용하면 인증 완료 후 인증 후 요청에서 Anonymous로 변경됩니다.>> contextHolderStrategy : org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy@577154a7 >> context : SecurityContextImpl [Authentication=AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=16bec162-3ad3-459d-8b97-bf3d6f1de226], Granted Authorities=[ROLE_ANONYMOUS]]] >> authentication : AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=16bec162-3ad3-459d-8b97-bf3d6f1de226], Granted Authorities=[ROLE_ANONYMOUS]] 2024-04-17T07:49:13.061+09:00 ERROR 84540 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.ClassCastException: class java.lang.String cannot be cast to class com.spring.security.config.security.service.MemberContext (java.lang.String is in module java.base of loader 'bootstrap'; com.spring.security.config.security.service.MemberContext is in unnamed module of loader 'app')] with root cause java.lang.ClassCastException: class java.lang.String cannot be cast to class com.spring.security.config.security.service.MemberContext (java.lang.String is in module java.base of loader 'bootstrap'; com.spring.security.config.security.service.MemberContext is in unnamed module of loader 'app') at com.spring.security.controller.MemberController.test(MemberController.java:43) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]Redis 내부에 인증객체가 저장되어 있는것 까지 확인했는데요. 혹시 SecurityFilterChain에 Redis관련 저장소를 별도로 설정을 해줘야 하는지, 어떤 부분을 확인해야하는지 여쭙고 싶습니다. Redis를 사용하는데 계속 HttpSessionSecurityContextRepository에서 시큐리티 컨텍스트를 찾을 수 없다고 나옵니답.2024-04-17T17:05:01.251+09:00 WARN 30066 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : SPRING_SECURITY_CONTEXT did not contain a SecurityContext but contained: '{authentication={authorities=[{authority=ROLE_ADMIN}], details={remoteAddress=0:0:0:0:0:0:0:1, sessionId=null}, authenticated=true, principal={password=null, username=sejinpark@email.com, authorities=[{authority=ROLE_ADMIN}], accountNonExpired=true, accountNonLocked=true, credentialsNonExpired=true, enabled=true}, credentials=null, name=sejinpark@email.com}}'; are you improperly modifying the HttpSession directly (you should always use SecurityContextHolder) or using the HttpSession attribute reserved for this class? 우선 테스트용으로 SecurityFilterChain에서 아래처럼 기존 버전 처럼 사용해서 인증 상태를 무조건 저장할 수 있도록 해놨습니다.커스텀 인증필터를 사용 안하고, SecurityContextPersistanceFilter를 사용하도록했습니다.securityContext.requireExplicitSave(false);테스트용으로 만든 레포지토리 링크 첨부합니다!https://github.com/codesejin/security-test
-
미해결코딩테스트 [ ALL IN ONE ]
디스코드 초대장이 올바르지 않다고 뜹니다
안녕하세요! 코딩테스트 All In One 강의 수강중인 취준생입니다.다름이 아니라, 디스코드 채널에 합류하기 위해 다른 글의 초대장 링크를 눌러봤지만, 올바르지 않은 초대장이라고 뜹니다ㅜㅜ혹시 새로운 디스코드 초대 링크를 받을 수 있을까요??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx4
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (네)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (네)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (네)[질문 내용]강사님이랑 똑같은 코드를 작성했고그런데도 자꾸 상품 입력 하자마자 오류가 뜨는데아무리 봐도 오류를 모르겠고 심지어 다운 받은 코드 복붙해서 실행해봐도 이렇게 계속 뜨는데 이유를 모르겠어요..
-
미해결스프링 핵심 원리 - 기본편
request scope의 http 요청
"request: HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다." 여기서 HTTP 요청이라는게 사용자가 웹 브라우저 주소창에 URL을 입력하는 것인지 아니면 myLoggerProvider.getObject();코드가 컨테이너에 MyLogger 빈의 존재 유무를 묻는 걸 뜻하는건지 궁금합니다
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
앞으로 강의 내용이 궁금합니다
안녕하세요 루키스님 강의 잘보고 있습니다게임 출시를 너무 하고 싶은데 좋은 강의 만들어 주셔서 감사합니다1 ui 핵심내용으로 분석 말고도 루키스님은어떻게 제작 하는지 ui강의 부탁드려도 되나요현재 나와있는 강의로 활용해서 적용하기 어려울거 같아서요 혹시 이번 초반에 바닥에 까는 스킬말고 공격이나 여러가지 구현하는건 없나요??이거 또한 스킬은 어떻게 활용할지 궁금합니다2 이번 강의 듣고 아직 많이 부족하지만싱글게임 만들어서 운영 해보고 싶습니다 이번 1~6월까지 강의 듣고 싱글게임 만들고 운영 하는거 지장없는지 걱정됩니다강의를 보고 있으면 지금 1월-6월 까지 강의 보다는7월부터 온라인 강의를 더 중요시 생각하시는거같아서요 이번 강의를 어느 수준까지 마무리 되는지,강의를 다 듣고 싱글게임 만들고 수입창출 수준까지 배울 수 있는지너무 궁금합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
갑자기 코드가 실행이 안됩니다. Edit Configuration
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]View 환결설정 강의를 시청하는중 아무런 문제없이 코드들은 잘 작성하고있엇습니다. dev tools 추가해서 recompile로 간편하게 해보는걸 하는중 윈도우 단축기는 crtl shift f9이라고 나왔고 그래서 몇번 계속 해보던중 갑자기 코드가 실행이 안되기 시작했습니다. 우선 HelloController, JpaShopApplication 마크가 클래스에서 자바 커피 모양으로 바뀌면서 .java가 붙엇고 실행하려고하면 Edit Configuration 이 나오면서 사진과 같은 창이 나오고 Cannot snapshot C:\Users\juny2\OneDrive\Desktop\study\jpashop\jpashop\build\resources\main\static\index.html: not a regular file 이라는 경고문이 나옵니다. build.gradle 다시 세팅햇더니 다시 클래스 마크로 돌아오긴했는데 여전히 같은 경고문 , Edit configuration이 뜨면서 실행이 안됩니다. (수정) 저기 Edit Config 설정하고 다른 글에서 snapshot 에러뜨면 Onedrive 밖으로 프로젝트 옮겨보라고 하셔서 프로젝트 옮겻고 정상적으로 돌아는가네요. 근데 문제는 index.html파일이 없는 상태에서 이렇게 초기화면에 뭐가 주르륵 뜨는데 어떻게 해결하는지 모르겟습니다. ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
크롬 주소입력창 자동으로 대문자 변경
안녕하세요, View 환경설정을 수강하고 있습니다.Controller에서 hello 부분 작성하고 있는데요. 주소창에 localhost:8080/hello라고 검색해도 자동으로 localhost:8080/Hello 로 검색이 됩니다. 이 부분 때문에 계속 에러 페이지 떠서, GetMapping부분을 "Hello"로 바꿔서 실행하니까 데이터는 출력이 잘 됩니다. 다만, 강사님이 작성하신대로 localhost:8080/hello을 검색했을때, 화면이 잘 나오게 하고 싶습니다. 자동으로 변환하는걸 막을 수는 없을까요 ㅠㅠ?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
안녕하세요 D1 LED 질문드립니다
다름이 아니라, D1 LED 색상이 강의에서는 초록색으로 보이는데 제건 빨간색이어서요... 보드 차이 인건가요?2 color로 표현되는 LED는 아닌 것 같아서요
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
0:33 자막 잘못됐네요. figma.com//mirror 슬래시 두개 찍혔어요. figma.com/mirror 입니다.
제곧내
-
미해결Next + React Query로 SNS 서비스 만들기
jwt관련 질문드립니다.
안녕하세요 제로초님. 강의 잘보고있습니다 강의와 관련된 질문이 아니라 죄송합니다.. 여러군데에서 찾아봐도 명쾌한 내용이 보이지 않아서 질문드립니다. 백엔드서버(spring)에서 jwt를 발급하는데, axios 인터셉터 처럼 401에러시 백엔드 jwt재발급요청을 하는방법이 Next에서 fetch함수에서는 할수가없는거 같더라고요.저가 생각한 해결법은 2가지인데 어떤게 좋을까요..?next-auth 미사용, axios사용하기fetch를 둘러싸는 customFetch()함수 정의하여 모든곳에서 사용하기
-
해결됨
스프링 오류 질문드립니다.
package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() { Member member = new Member(); member.setUsername("memberA"); Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); Assertions.assertThat(findMember).isEqualTo(member); //JPA 엔티티 동일성 보장 } } 위의 코드를 실행했는데, 아래와 같은 오류가 나왔습니다. 해결책을 알려주시면 감사하겠습니다. ... 91 common frames omitted============================CONDITIONS EVALUATION REPORT============================Positive matches:----------------- NoneNegative matches:----------------- NoneExclusions:----------- NoneUnconditional classes:---------------------- None2024-04-17T00:07:39.846+09:00 WARN 5176 --- [ Test worker] o.s.test.context.TestContextManager : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener] to prepare test instance [jpabook.jpashop.MemberRepositoryTest@41a23470]java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@48368a08 testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@49cb9cb5, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@146587a2, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@16c63f5, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@6127a7e, org.springframework.boot.test.context.SpringBootTestAnnotation@8694b330], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] ... 55 moreCaused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) > Task :test FAILEDMemberRepositoryTest > testMember FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1786 Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:276 Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:1911 test completed, 1 failedFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/study/jpashop/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.Deprecated 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.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 6s4 actionable tasks: 1 executed, 3 up-to-date
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
configService와 process.env
안녕하세요 코팩님!class 작성 시에 다른 class를 상속하여 작성하는 경우 있잖아요nestjs/passport를 이용해서 구글 oauth 로그인을 구현하려고 합니다.import { PassportStrategy } from '@nestjs/passport'; import { Strategy } from 'passport-google-oauth20'; import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; @Injectable() export class GoogleStrategy extends PassportStrategy(Strategy, 'google') { constructor(private readonly configService: ConfigService) { super({ clientID: this.configService.get('GOOGLE_CLIENT_ID'), clientSecret: this.configService.get('GOOGLE_CLIENT_SECRET'), callbackURL: 'http://localhost:3000/auth/google/callback', scope: ['email', 'profile'], }); }이 경우에super() 호출 전에 this를 참조하려고 해서 에러가 발생합니다.이런 경우에는 불가피하게 그냥 @Injectable() export class GoogleStrategy extends PassportStrategy(Strategy, 'google') { constructor() { super({ clientID: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, callbackURL: 'http://localhost:3000/auth/google/callback', scope: ['email', 'profile'], }); }이렇게 직접 환경변수를 적어주는 방법 밖에는 없을까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다
안녕하세요강의 자료 부탁드립니다감사합니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
강의 중간중간에 1일차 2일차 몇교시 알려주시는거
지켜보고 싶습니다 제가 분량조절이 잘 안될것같아서요혹시 일정표같은게 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
errors.properties intelliJ 인식 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]왜 제 errors.properties는 아이콘 모양이 바뀌지 않고 인식을 안하는 걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findAny() 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]섹션3 회원 도메인과 리포지토리 만들기 강의 중 MemoryMemberRepository.java의 findByName 코드에 대해 질문 있습니다.@Override public Optional<Member> findByName(String name) { return store.values().stream() .filter(member -> member.getName().equals(name)) .findAny(); }해당 코드에서 findAny()는 하나라도 찾으면 반환한다고 설명해주셨는데 그럼 같은 이름의 서로 다른 회원이 여러 명 있어도 루프를 돌리면서 가장 먼저 찾은 한 명의 회원만 반환하는 건가요?
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
안드로이드 스튜디오 파이어베이스 연동
안드로이드 스튜디오 최신버전(이구아나) 설치 후 최신 파이어베이스 연동 유튜브 보고 따라하는데 자꾸 Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1. 이렇게 오류가 뜹니다ㅠㅠ 버전이 맞지 않은 걸까요? 이전 버전 안드로이드 스튜디오를 사용해야 하나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
spring boot 초기 설치시 index파일
안녕하세요, spring boot를 처음에 설치하면 index.html이 없고 localhost:8080 으로 가면 error 문구가 적혀있는 화면이 출력됩니다. 개발자도구에 들어가서 보니까 해당 부분이 index이라고 되어있던데 실제로 스프링 부트에서 찾아보니까 해당 내용은 찾을 수가 없었습니다. 스프링부트에서 프로젝트를 생성한 후 임시로 index.html 파일을 생성해준것인가요?!