자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
UserController.java UserUpdateRequest.java 지난 강의에서 사용한 @PostMapping @GetMapping, 이번강의에서 PutMapping과 같이 사용한 @DeleteMapping은 정상적으로 작동이 되지만 @PutMapping만 문제가 발생하여 질문드립니다. Import가 안됐나 싶어 Import를 시도해보았지만 Import와 관련된 문제는 아니었던것 같습니다. @PutMapping과 updateUser의 @RequestBody 공통적으로 Annotations are not allowed here가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 2019년형 맥북 사용중인데요, .gradlew build 부분에서 자꾸 오류가 나네요. 왠만한거 검색이랑 다른 토론글로 자바 11로 다 수정했는데 계속 오류가 나요. 마지막사진에 자바 버전이 1.8 로 되어있어서 그것도 바꿀려고 했는데 계속 안바뀌네요...혹시 뭐가문제인지 알수있을까요?
강사님 안녕하세요 수업 잘 듣고 있습니다. 덕분에 도전하기 힘들었던 인증인가를 조금이나마 이해하게 되고 있는 것 같습니다. 수업을 듣던 중 한가지 궁금한 점이 생겨서 질문 남기게 되었습니다. LoginController에서 String accessToken = authorizationHeader.split(" ")[1]; 이라는 변수를 선언하는데 저는 authorizationHeader.split(" ")[1]이 accessToken인지 accessToken을 포함한 jwt인지가 헷갈립니다. 혹시 이 부분과 관련하여 제가 어떻게 이해하면 좋을지 조언 해주실 수 있으실까요? 감사합니다.
트랜잭션안에 쓸수있는 EntityManager 없다고 에러가 뜹니다. 설정 문제인걸까요? org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'initDb': Invocation of init method failed; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921) ~[spring-context-5.3.29.jar:5.3.29] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.29.jar:5.3.29] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.14.jar:2.7.14] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.14.jar:2.7.14] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.14.jar:2.7.14] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.14.jar:2.7.14] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.14.jar:2.7.14] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.14.jar:2.7.14] at jpabook.jpashop.JpashopApplication.main(JpashopApplication.java:10) ~[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] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-2.7.14.jar:2.7.14] Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:299) ~[spring-orm-5.3.29.jar:5.3.29] at jdk.proxy3/jdk.proxy3.$Proxy119.persist(Unknown Source) ~[na:na] at jpabook.jpashop.InitDb$InitService.dbInit1(InitDb.java:34) ~[main/:na] at jpabook.jpashop.InitDb.init(InitDb.java:20) ~[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] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.29.jar:5.3.29] ... 23 common frames omitted 제코드입니다. package jpabook.jpashop; import jpabook.jpashop.domain.*; import jpabook.jpashop.domain.item.Book; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.persistence.EntityManager; @Component @RequiredArgsConstructor public class InitDb { private final InitService initService; @PostConstruct public void init() { initService.dbInit1(); } @Component @Transactional @RequiredArgsConstructor static class InitService { private final EntityManager em; private void dbInit1() { Member member = new Member(); member.setName("UserA"); member.setAddress(new Address("서울", "1", "1111")); em.persist(member); Book book1 = new Book(); book1.setName("JPA1 BOOK"); book1.setPrice(10000); book1.setStockQuantity(100); em.persist(book1); Book book2 = new Book(); book2.setName("JPA2 BOOK"); book2.setPrice(20000); book2.setStockQuantity(100); em.persist(book2); OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 1); OrderItem orderItem2 = OrderItem.createOrderItem(book2, 20000, 1); Delivery delivery = new Delivery(); delivery.setAddress(member.getAddress()); Order order = Order.createOrder(member, delivery, orderItem1, orderItem2); em.persist(order); } } }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. EntityA 1:N EntityB EntityB 1:N EntityC 이런식으로 있을 때 , EntityA 가 EntityB를 @oneToMany로 가지고있고, EntityB 가 EntityC를 @oneToMany로 가지고 있습니다. 배치사이즈 옵션을 넣고 select a from EntityA a 했을때 , EntityA의 갯수만큼 EntityB에 in절로 EntityA의 키값을 넣어서 @oneToMany를 한번에 끌고왔다고 했을 때 , EntityB안에있는 EntityC를 또 EntityB의 갯수만큼 EntityC에 in절로 EntityB의 키값을 넣어서 한번에 끌고 올 수 있는 방법이 있는지 궁금했습니다. 다중 페치조인 안되는걸 알지만 예를 들어서 이런걸 원한다고 생각하시면 될 것 같습니다 select a from EntityA a join fetch EnitityB(List) b join fetch b.EntityC(List) 이런식으로 컬럼 갯수가 일대다 일대다로 기하급수적으로 증가하는 경우인데 배치사이즈를 사용하여 select a from EntityA a 를 했을 땐 a.EntityB 에 접근할때 당연히 in 절로 가져와주지만 EntityB의 일대다인 EntityC 를 조회 할 땐 N+1이 다시 터집니다 엮여있는 모든 연관관계들을 IN절로 태우고 싶은데 방법이 없을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 일단 페치조인으로 둘이상의 컬렉션은 페치 조인 할 수 없다는 걸 알았습니다, 이럴땐 배치사이즈로 컬렉션들을 in 절로 끌고오면 되는것도 이해했습니다. 궁금한것은 in절로 끌고온 컬렉션들안에 또 @oneToMany로 선언된 엔티티가 존재한다면 그 컬렉션들은 @Batchsize옵션으로 in절로 끌고 올 수 가 없나요? 배치 사이즈를 줘도 컬조회할 기준 엔티티에 직접적으로 존재하지 않는 컬렉션 엔티티들은 in절로 끌고오지않고 n+1이 터지는것같습니다
spring url 리다이렉트/포워딩 기술적 문의 드립니다 안녕하세요 김동희입니다 제가 공공기관 프로젝트에 개발자로 참여중입니다 이쪽프로젝트 환경은 jsp + 전자정부프레임웍(Spring) + html + postgre(db) 입니다 이쪽 pm 이 알아봐달라고 부탁하는 사항이 있고, 제가 생각하기에도 궁굼해서 혹시 이런부분이 될런지 문의 드립니다 메인 정부기관 홈페이지는 아래입니다 ex) https://www.url01.urlcom 각 전국 지역별(강원,인천,제주..) 지자체관 별로 별도로 지역별 블로그 형식으로 지자체관 형식을 뛰웁니다 ex) 강원특별자치도 인제군 지자체관 https://www.url01.urlcom/xxx/xxx/xxxx/xxxxx/infoMain.do?ctpv=6420000&sgg=4330000 하지만, 고객(공무원)측에서 url 하위로 깔리는 url 변수를 보여주지 말라 지자체관별로 단축 url 을 사용 할 수 있게 해달라고 합니다 as-is https://www.url01.urlcom/ xxx/xxx/xxxx/xxxxx/infoMain.do?ctpv=6420000&sgg=4330000 to-be https://www.url01.urlcom/ injegun 혹시 요청이 현재 spring(전자정부프레임웍) + jsp + tiels 환경에서 이 환경에서 고객(공무원) 들의 요청을 수렴해서 반영 할 수 있을지 모르겠습니다 AA,TA 적인 기술적인 측면에서 스프링의 config 또는 다른설정값 변경, 인터셉터변경, ~Controller~.java 변경 ~tiles.xml 변경 등을 통해서 가능 할까요? 염치 불구하고 저도 이런부분이 궁금하기도 해서 문의 드립니다 김동희 드림
Dockerfile에서 FROM은 base 이미지를 지정할 수 있는데요, 보통 ubuntu와 같은 OS를 지정하는 것으로 알고 있습니다. 만약 FROM ubuntu로 지정했을 경우 ubuntu OS로 해당 컨테이너가 동작하며 그 안에서 jdk를 설치하고 앱을 실행하고 하는 작업이 가능할 것 같은데요 FROM에 그냥 jdk를 지정하면 java는 jvm을 통해 OS에 종속되지 않고 앱이 실행 가능하니 정상 실행될 것이라는 것은 알지만 컨테이너의 OS는 어떻게 되는것인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 05-Sep-2023 22:30:29.170 INFO [main] org.apache.catalina.startup.Catalina.start 서버가 [94] 밀리초 내에 시작되었습니다. Connected to server [2023-09-05 10:30:29,513] Artifact Gradle : hello : server-0.0.1-SNAPSHOT.war (exploded): Artifact is being deployed, please wait... [2023-09-05 10:30:29,550] Artifact Gradle : hello : server-0.0.1-SNAPSHOT.war (exploded): Error during artifact deployment. See server log for details. [2023-09-05 10:30:29,551] Artifact Gradle : hello : server-0.0.1-SNAPSHOT.war (exploded): com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: D:\inflearn\boot-source-20230228\start\server\build\libs\exploded\server-0.0.1-SNAPSHOT.war not found for the web module. 톰캣을 run하면 위처럼 성공했다는 메시지와 실패했다는 메시지가 둘다 나오고 서버는 실행중인대 페이지들은 전부 404에러가 뜹니다. 근대 메시지대로 libs폴더안에 수동으로 exploded폴더를 만들고 빌드했던 war파일을 넣어주면 정상 작동합니다. 이건 톰캣서버가 자동으로 해주어야 하는대 왜 안되는 걸까요? jdk17.0.5 gradle7.5입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. cmd터미널창에 gradlew.bat build를 입력하면 아래 사진과 같은 오류가 발생합니다 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release. 이러한 오류가 뜨는데, 실행하는데는 문제가 없습니다. 이 오류를 고쳐야 할 것 같은데, 어떻게 고쳐야할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 버전을 깔았는데 빌드 그래들이 전혀 보이지 않습니다.ㅜ
난독증이 있는건지 내용은 그대론데 읽을 때마다 내용이 달라지는 것 같아 질문을 남깁니다... 다른 분들이 작성하고, 호돌맨님께서 남기신 답글들을 보고 나서 제가 이해한 것이 맞는지 확인 부탁드립니다... 1. 자판기 비유에 대한 내용 1.1. request(edit), domain(editor)를 작성하셨는데, 말씀하시는 부분이 (결국 같은 내용이겠지만...) request(edit)에는 edit.title, edit.content(100원, 500원)(동전)뿐만 아니라 추후에 예를 들어 edit.name , edit.gender(1000원, 10000원)(지폐)가 넘어 올 수도 있는 상황이 발생할 수도 있는데, 지폐(name, gender)는 받고 싶지 않은 상황에서 domain(editor)(금액 투입구)를 사용하지 않으면, 지폐가 들어오는 것을 막을 수 없고, 추후에 불필요한 지폐를 걸러내는 작업이 발생하기 때문에 애초에 입구 자체를 동전만 넣을 수 있는 domain(editor) 금액 투입구를 만들게 되면, 들어온 모든 동전은 사용에 필요한 값이기 때문에 불필요하게 걸러내는 작업이 없어진다고 생각하는 것이 맞을까요...? (같은 말인 것 같은데... 예를 더 어렵게 만든 것 같아 죄송합니다...) 호돌맨님이 if를 통해 기존 값을 사용하는 방식 2.1 이 말은 즉, 위 예를 연속해서 사용하자면 [사람 1]이 edit.title(100원)을 넣은 상태에서 [사람 2]가 edit.content(500원)짜리를 넣어도 [사람 2] 때문에 [사람 1]이 넣은 edit.title(100원)이 사라지면 안되기 때문에 사용한다는 말씀이 맞으실까요? (물론 위의 예는 [사람 2]가 edit.title(100원)을 넣게되면 금액이 추가되는 것이 아니라 동전이 변경되야 한다는 오류가 있긴 하지만... 그냥 사용하겠습니다...) 뭔가 작성하면서 또 이해가 된 것 같긴하지만... 틀린 부분이 있다면 지적 부탁드립니다... 또 예를 추가하고 글을 복잡하게 만들어 죄송합니다...
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요~ 강사님! 강의보고 다 만들고 배포까지 완료한 홈페이지에서 수정할게 있어서 수정해서 git에 업로드까지 했습니다. 그런데 Ec2 서버에 적용시킬때 기존 library-app폴더를 완전히 삭제 후 다시 git에서 전체 업로드 해서 빌드해야하나요?? 아니면 부분 수정이 가능 한걸까요?? 어떤 방법으로 수정처리 해야하는지 궁금합니다!!!
안녕하세요 강의잘듣고 있습니다!. 해당 강의부터 엑셀에 작성해주신대로 05-01브랜치를 참고하여 강의를 진행하고 있습니다. SecurityConfig.java를 보면, ajax LOGIN방식을 DSL로 구현한게 Form방식과 합쳐져 있는데 이 설정하나로 form / ajax로그인 두 방식모두 지원하는건가요?