월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 기반 REST API 개발
Set.of 질문드립니다.
자바 11의 경우엔 Set.of를 사용하여 권한을 추가하는데 자바8의 경우에는 어떻게 해야하나요?
- 미해결스프링 기반 REST API 개발
asciidoctor 빌드에러 ㅠㅠ
Task :asciidoctor FAILED 계속 이렇게 실패하고있습니다 ㅠㅠ 제 파일경로에 한글이 있는데 혹시 그거때메 인코딩문제가 생겨서 그러는건가요 ?? ㅠㅠㅠㅠ
- 미해결스프링 기반 REST API 개발
link에 query추가
( 메소드 ) ResponseEntity getMembers(@PageableDefault Pageable pageable) ( link부분 ) linkTo(methodOn(MemberController.class).getMembers(PageRequest.of(pageable.getPageNumber()+1, pageable.getPageSize(), pageable.getSort()))) 이런식으로 methodOn을 통해서 url에 query를 추가하는거같은데 String이나 Long같은 기본객체에 대해서만 쿼리가 추가되는거같고 새로정의한 객체나 위의 Pageable같은경우는 쿼리가 추가가안되는데 혹시 해결방법 아시는지요 ? ㅠㅠ
- 미해결스프링 기반 REST API 개발
JunitParams 관련 질문 드립니다.
@Parmeters를 의 값들을 받을 수 없는것 같습니다. 이런식으로 짜였는데 에러가 발생합니다. org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [int basePrice] in method [public void com.hj.spring.events.EventTest.testFree(int,int,boolean)]. at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameter(ExecutableInvoker.java:200) at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:183) at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:144) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:96) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135) parameterResolver가 없다고 하는데 해결방법을 여쭐수 있을까요 junit 4.1.2버젼에 jupiter 5.5.2버젼입니다.
- 해결됨스프링 기반 REST API 개발
안녕하세요 선장님 응답값 한글인코딩 여쭤봅니다
MockMvc로 테스트 중입니다. 응답값이 한글이면 깨지길래 위와 같이 해결했습니다. 근데 너무 지저분해보입니다 ㅠ 혹시 더 좋은 방법 알고계시다면 알려주세요! 감사합니다!
- 미해결스프링 기반 REST API 개발
WebMvcLinkBuilder 에서 /( slash메서드사용 ) 말고 쿼리 파라미터로 만드는 방법
@ResponseStatus(code = HttpStatus.CREATED) @PostMapping(value = "/api/v0/events", produces = MediaTypes.HAL_JSON_VALUE) public ResponseEntity createEvent(@RequestBody Event event) { Event savedEvent = eventRepo.save(event); URI createdUri = WebMvcLinkBuilder.linkTo(methodOn(EventController.class).createEvent(event)) .slash(savedEvent.getId()) .toUri(); return ResponseEntity.created(createdUri).body(savedEvent); } // URI 구성 결과 slash메서드를 사용했기 때문에 events/1 이라는 결과가 나왔다 "http://localhost/api/v0/events/1" // 제가 원하는 구성 "http://localhost/events/api/v3/events?name=david&location=kor" 선장님 코드에서 slash 를 써서 URI 결과가 events/1로 나오는게 만드는걸 보고 쿼리파라미터(?) 형식으로도 할 수 있나 해서 시도해보고 있는데 잘안됩니다. 쿼리파라미터 형식으로 할 수 있는지 궁금합니다
- 미해결스프링 기반 REST API 개발
inmemory TokenStore -> jdbc TokenStore
안녕하세요. Spring boot로 서버를 개발중인 창업자에요. InMemory TokenStore로 개발 하고, JdbcTokenStore로 교체하여 운영서버에 올리고 싶어서 교체를 다 해놓았어요. 여기서 문제가 발생하여 질문드려요. 기존에는 Account 가 수정되면 바로 적용이되어 다음에 호출된 Api는 수정된 Account가 반환되었는데, 지금은 Token 발급 시점의 Account가 반환이 되고 있어요. (실제 Account에 update 쿼리도 날아가고 DB에도 반영이 되구요.) 제가 여태까지 디버깅한 결과 SecurityContextHolder 의 UserCache에 캐슁이 되는데 이게 기존에는 잘 캐슁을 하는데 수정한 뒤로는 이게 잘 안되는 것 같아요. 혹시 해결할 수 있는 힌트가 있을까 해서 질문 올립니다. 감사합니다.
- 미해결스프링 기반 REST API 개발
hateoas 관련 문의 드립니다.
Controller에서 hateoas 사용시 mvc 패키지 하위에서 linkTo 를 import해서 사용하는데... hateoas 1.0.2 버전 이후부터는 mvc 패키지가 빠졌서 인지.. linkTo를 찾을수가 없는데 이런 경우 버전을 내려야 할까요??? 다른 방법을 찾고 있는데 안보여서 문의 드립니다.
- 미해결스프링 기반 REST API 개발
공유해주신 수업자료에 오타인것같습니다.
3. REST API 에서. hypermisa as the engine of appliaction state (HATEOAS) Hypermisa대신 Hypermedia로 수정되어야 할듯합니다.
- 미해결스프링 기반 REST API 개발
AuthorizationServerEndpointsConfigurer 클래스의 userDetailsService 와 authenticationManager userdetailservice의 차이점
해당 두 클래스의 userdetailservice 의 차이점이 궁금합니다. 각각 다른 용도인건가요? 예제 상으로는 같은 서비스를 사용해서 질문드립니다. 아그리고 인증서버 테스트 당시 그전 수업에서 APP CONFIG 파일내에서 그전 수업 테스트를 위해 등록한 applicationrunner 빈은 제거 하고 진행하는게 맞는거죠? 같은 유저정보가 두번 입력 되어서 테스트가 실패합니다.
- 미해결스프링 기반 REST API 개발
Junit5에서 @Ignore가 되지를 않습니다.
Junit5 메뉴얼에서 // @ExtendWith(IgnoreCondition.class) @EnableJUnit4MigrationSupport위의 2가지 방식으로 사용하면 가능한 것 같은데위 2가지를 import하지를 못합니다.어떻게 하면 좋을까요.
- 미해결스프링 기반 REST API 개발
maven gradle차이가 궁금합니다.
저는 아무래도 gradle에 익숙하지 않고, 문법도 업데이트될 때마다 조금씩 변하게 되어서 좀 더 사용하기 쉬운 maven 을 선호하는 편인데 차이 같은 것을 보면은 gradle이 maven보다 빠르다고 하는데 이것이 실제 100개의 서버에 배포를 하게되면 차이가 느껴질 정도인가요? 왜 요즘 신규 프로젝트를 보면은 gradle을 많이 사용하게 되는지 궁금합니다. 백기선님 강의는 전부가 maven이라서 따라하기 편한 것도 있습니다.
- 미해결스프링 기반 REST API 개발
테스트 실행이 잘 안되어서 질문 드립니다.
@Testvoid createEvent() throws Exception { Event event = Event.builder() .name("Spring") .description("Rest Api") .beginEnrollmentDateTime(LocalDateTime.of(2020, 01, 31, 14, 50, 11)) .closeEnrollmentDateTime(LocalDateTime.of(2020,2,8, 00,00,00)) .baseProce(100) .maxPrice(200) .limitOfEnrollment(100) .location("Seoul") .build(); mockMvc.perform(post("/api/events") .contentType(MediaType.APPLICATION_JSON_VALUE) .accept(MediaTypes.HAL_JSON_VALUE) .contentType(objectMapper.writeValueAsString(event))) .andDo(print()) .andExpect(status().isCreated()) .andExpect(jsonPath("id").exists());} @Controller@RequestMapping(value = "/api/events", produces = MediaTypes.HAL_JSON_VALUE)public class EventController { @PostMapping public ResponseEntity createEvent(@RequestBody Event event){ URI createUri = linkTo(EventController.class).slash("{id}").toUri(); event.setId(10l); return ResponseEntity.created(createUri).body(event); }}이렇게 실행시 415 에러가 발생하고 있습니다. MediaType을 정상적으로 준 것 같은데 에러가 왜 발생하는지 모르겠습니다.
- 해결됨스프링 기반 REST API 개발
안녕하세요
안녕하세요 강의 정말 잘듣고 있습니다. 현재까지 rest api 보안 적용중 스프링 스큐리티 폼 인증 설정을 했는데 get 요청을 authenticate()으로 준후 로그인 페이지에서 정확한 아이디와 비밀번호를 입력했음에도 다시 로그인 페이지로 리다이렉트 됩니다.(anonymous()주면 정삭적으로 작동합니다.) 일단 디비에 사용자 정보는 이미 제대로 들어가있는 상태이며 입력정보또한 올바르게 브라우저 상에서는 넘겨진다는 것을 확인 했으나 스프링 내부에서는 정확하게 받은거지를 확인하지 못했습니다. 어떤 클래스를 디버깅으로 잡아서 확인하면 좋을까요 ? 그리고 로그인 요청후 해당 아이디를 디비에서 조회하는 쿼리도 찍히지 않고 있습니다.
- 해결됨스프링 기반 REST API 개발
ModelMapper 테스트 관련 문의
안녕하세요. 지난번 질문에 상세히 답해주셔서 감사합니다. 추가로 ModelMapper 테스트 관련해서 문의드립니다. 기선님의 강의를 듣고 ModelMapper를 사용해보려고 하는데, 기존에 Mockito를 사용해서 테스트하던 부분이 ModelMapper를 적용하면서 Mocking이 잘 안되고 있습니다. 어떤 부분이 잘못되었는지 확인 부탁드립니다. @Test public void When_재료_리스트_조회_Then_정상_반환() { // Given Page<MaterialEntity> materialEntityPage = new PageImpl<>(Collections.singletonList(this.materialEntity)); given(this.materialRepository.findAll(any(Pageable.class))).willReturn(materialEntityPage); Material material = this.modelMapper.map(this.materialEntity, Material.class); // modelMapper Mocking 코드 given(this.modelMapper.map(any(MaterialEntity.class), eq(Material.class))).willReturn(material); // When final Page<Material> materialPage = this.materialService.readMaterialList(PageRequest.of(0, 10)); // Then assertThat(materialPage.getSize(), is(1)); assertThat(materialPage.getContent().get(0), instanceOf(Material.class)); assertThat(materialPage.getContent().get(0).getName(), is(this.materialEntity.getName())); assertThat(materialPage.getContent().get(0).getUnitName(), is(this.materialEntity.getUnitEntity().getName())); } @Service public class MaterialServiceImpl implements MaterialService { private final MaterialRepository materialRepository; private final UnitRepository unitRepository; private final ModelMapper modelMapper; public MaterialServiceImpl(MaterialRepository materialRepository, UnitRepository unitRepository, ModelMapper modelMapper) { this.materialRepository = materialRepository; this.unitRepository = unitRepository; this.modelMapper = modelMapper; } @Override public Page<Material> readMaterialList(Pageable pageable) { Page<MaterialEntity> materialEntityPage = this.materialRepository.findAll(pageable); // 테스트를 위해 추가: testMaterial에 null 값이 들어옴 Material testMaterial = this.modelMapper.map(materialEntityPage.getContent().get(0), Material.class); return materialEntityPage .map(materialEntity -> modelMapper.map(materialEntity, Material.class)); } }
- 해결됨스프링 기반 REST API 개발
Rest Docs 관련 문의 드립니다
본 강의를 듣고 다른 프로젝트에 Rest Docs를 적용해보고 있는데, 적용 도중 몇가지 문의 사항이 있습니다. 1. List의 각 요소에 self 링크 넣는 방법 강의 내용중에 Page의 각 요소에 PageResourcesAssembler를 이용해서 self 링크를 넣는 내용이 있었는데, Page가 아닌 List로 리턴하는 메소드에서를 어떻게 구현해야 될까요? 2. Resource 클래스를 상속한 클래스의 리턴시 에러 발생 Resource 클래스를 상속해서 링크를 생성해주는 클래스를 만들었습니다. 그리고 그 클래스를 리턴하게 했는데, 테스트에서는 통과가 되는데 실제 API 호출을 할 때는 에러가 발생합니다. 어떤 부분이 문제인지 문의드립니다. <에러 내용> org.springframework.http.converter.HttpMessageConversionException: Could not instantiate JAXBContext for class [class link.myrecipes.api.common.RestResource]: Implementation of JAXB-API has not been found on module path or classpath.; nested exception is javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath. - with linked exception: [java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory] at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.getJaxbContext(AbstractJaxb2HttpMessageConverter.java:117) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.createMarshaller(AbstractJaxb2HttpMessageConverter.java:51) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter.writeToResult(Jaxb2RootElementHttpMessageConverter.java:180) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.writeInternal(AbstractXmlHttpMessageConverter.java:84) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:227) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:293) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:225) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath. at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.ContextFinder.find(ContextFinder.java:421) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662) ~[jaxb-api-2.3.1.jar:2.3.0] at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.getJaxbContext(AbstractJaxb2HttpMessageConverter.java:112) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE] ... 55 common frames omitted Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory at org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader.loadClass(TomcatEmbeddedWebappClassLoader.java:68) ~[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE] at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188) ~[tomcat-embed-core-9.0.22.jar:9.0.22] at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:276) ~[jaxb-api-2.3.1.jar:2.3.0] ... 59 common frames omitted <클래스 코드> public class RestResource<T> extends Resource<T> { public RestResource(T content, String key, Class<?> controllerClass, LinkType[] addLinks, String linkPrefix, Link... links) { super(content, links); add(linkTo(controllerClass).slash(key).withSelfRel()); List<LinkType> addLinkList = Arrays.asList(addLinks); if (addLinkList.contains(LinkType.CREATE)) { add(linkTo(controllerClass).withRel(linkPrefix + "-create")); } if (addLinkList.contains(LinkType.READ)) { add(linkTo(controllerClass).withRel(linkPrefix + "-read")); } if (addLinkList.contains(LinkType.UPDATE)) { add(linkTo(controllerClass).withRel(linkPrefix + "-update")); } if (addLinkList.contains(LinkType.DELETE)) { add(linkTo(controllerClass).withRel(linkPrefix + "-delete")); } if (addLinkList.contains(LinkType.QUERY)) { add(linkTo(controllerClass).withRel(linkPrefix + "-query")); } } public RestResource(T content, Link... links) { super(content, links); } public void addProfileLink(String profileLink) { add(new Link(profileLink).withRel("profile")); } public Link selfLink() { return getLinks("self").get(0); } }
- 미해결스프링 기반 REST API 개발
maven package 시 오류
모든 플러그인 추가후 maven package를 실시하는데 이와 같은 오류가 나옵니다. me.jj.demoinflearnrestapi.DemoApplicationTests.initializationError(me.jj.demoinflearnrestapi.DemoApplicationTests) Run 1: DemoApplicationTests.initializationError » The class me.jj.demoinflearnres... Run 2: DemoApplicationTests.initializationError » Test class should have exactly one... 해당 테스트는 이와 같이 비어있는데 계속 오류가 나내요 package me.jj.demoinflearnrestapi;import org.junit.Test;class DemoApplicationTests { @Test public void contextLoads() { }} 해당 파일을 주석처리하고 진행하면 정상적으로 진행되는데 어떤부분을 오류로 인한건지 어디서 파악할수있을까요?
- 미해결스프링 기반 REST API 개발
SpringRunner, JunitParamsRunner에 대한 질문
안녕하세요 좋은 강의 항상 감사드립니다. Test class에서 SpringRunner와 JunitParamsRunner는 RunWith로 동시에 사용 못합니다. 그래서 어떻게하면 bean으로 등록된 클래스를 사용하면서 JunitParameter도 사용할 수 있을지 질문드립니다. (추가로 기선님 코드에서는 SpringRunner와 JunitParameter를 아에 다른 클래스에서 각각 사용하던데, 이런 방식으로 해결해야 할까요?)
- 미해결스프링 기반 REST API 개발
안녕하세요 질문드립니다.
현재 스프링(2.2.2) h2(1.4.200),spring-data-jpa(2.2.3) 등최신버젼으로 프로젝트를 구성했는데 h2 database의 test를 주석처리해도 기본으로 안들어 가는것 같습니다. 그래서 SCOPE을 runtime으로 주니 되는데 혹시 이게 스프링 버젼차이로 인한 설정 변경 떄문인가요?
- 미해결스프링 기반 REST API 개발
스프링 시큐리티 vs 스프링 rest api 강의 순서 질문드려요
2개 구매했는데 어떤거부터 듣는게 좋을까요?