inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

쓰레드 풀 관련 질문 드립니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

쓰레드 풀 관련해서 질문드립니다. 강의 예제에서 HTTP 요청이 들어온경우 연결 이후 쓰레드 풀에서 쓰레드를 할당해주는 것 이라고 이해했는데. 문득 이런 궁금점이 들었습니다. 요청이 들어왔을 때 '연결'을하고, 이에 대한 '응답' 을 하는 것도 쓰레드가 해줘야 하는 일이 아닌가요? 프로세스의 가장 작은 단위 이기 때문에 이런 '연결' 과 '응답'도 쓰레드가 결국해줘야 한다고 생각했습니다 그렇다면 이런 연결과 응답을 책임지는 쓰레드도 톰캣 내부에 있는 (쓰레드 풀)에 있는 쓰레드를 쓰는건가요..?

  • spring
  • MVC
최지환 댓글 1 좋아요 2 조회수 266

일부 파일에서는 파라미터가 필요없을경우 어떻게하는게 맞을까요?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

강의의 base와같은 기본 레이아웃이 있으며 파라미터 a,b,c를 받습니다 또한 이것을 호출 하는 html파일 a,b,c가있습니다 a와 c에서는 세가지 파라미터를 다 넣어주지만 b에서는 파라미터중 하나만을 사용해서 나머지 두 파라미터를 넘겨주지 않으려고합니다 넘겨주지 않는다면 에러가 나고 파라미터를 넘겨주기 위해 무의미한 태그를 두개 만들자니 좋지않아 보이는데 어떤식으로 하는게 적당할까요

  • spring
  • MVC
댓글 1 좋아요 1 조회수 394

[JPA와 DB 설정, 동작확인] import Assert 오류

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예/ 아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 / 아니오 ) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요, 현재 <JPA와 DB 설정, 동작확인> 내용을 (09:13) 따라가면서 듣고 있는데 import하는 Assert 부분에서 오류가 납니다. <강의> <내 코드> 구글링해서 찾아보니까 (https://aonee.tistory.com/2) build.gradle에 밑 내용 넣으면 된다고 하는데 다른 방법이 있나요? 강의에서는 안 넣어도 잘 되는 것 같아서 여쭤봅니다. 또 제가 devtools 동작오류가 있어서 (https://www.inflearn.com/course/스프링부트-JPA-활용-1/unit/24277?tab=community&q=152186) 질문에서 알려준 사이트 내용대로 build.gradle에 apply plugin: 'idea'를 적었습니다. 저는 이 부분을 바꾸지 않는 선에서 오류를 해결하고 싶어서 다른 방법을 찾고 싶습니다. 추가) 비슷한 질문 보니까 build.gradle를 올리면 좋다고 하셔서 추가합니다. https://www.inflearn.com/course/ 스프링부트 -JPA- 활용 -1/unit/24279?tab=community&q=580709 <bulid.gradle> plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' } apply plugin: 'idea' group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }

  • 오류
  • 웹앱
  • spring-boot
  • java
  • spring
  • JPA
blackbird7 댓글 2 좋아요 3 조회수 747

아규먼트 리졸버를 이용한 로그인 처리 관련 질문 입니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요. 두 가지 궁금한 점이 있는데요. 우선, 컨트롤러가 RequestBody 나 HttpEntity 로 파라미터를 받을때는 아규먼트 리졸버가 항상 메세지 컨버터를 사용했었는데요. ArgumentResolver 강의에서는 아규먼트 리졸버가 세션으로 부터 Member 객체를 꺼내서 넘겨주는 시점에서 이미 컨트롤러에서 받는 Member 객체와 이미 타입이 일치하기 때문에 메세지 컨버터가 하는 역할은 여기서는 필요없다고 보면 될까요? 두번째 질문은, 인터셉터에서 이미 로그인 체크를 해서 로그인이 안되었을 경우 로그인 페이지로 리다이렉션을 하고 있는데 컨트롤러내에서 굳이 loginMember == null 을 체크해서 리다이렉션을 다시 처리해 주어야 하는지 궁금합니다. 실무에서는 로그인이 필요한 요청 핸들러 메소드에서는 로그인 체크가 이미 인터셉터에서 처리 되고 비인증 사용자는 인터셉터에서 걸러져서 핸들러 어뎁터 까지 오지 않는게 바람직한 처리라고 보면 될까요?

  • MVC
  • spring
Woo-seok Choi 댓글 1 좋아요 1 조회수 737

안녕하세요 No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](--tests filter) 이 에러가 나서 도움을 요청합니다.

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

MemberRepositoryTest을 실행 했는데 아래와 같이 에러가 나옵니다 Execution failed for task ':test'. > No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](--tests filter) * 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. MemberRepositoryTest코드 package jpabook.jpashop; import static org.junit.Assert.*; import jpabook.jpashop.Member; import jpabook.jpashop.MemberRepository; 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; import javax.persistence.EntityManager; @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 엔티티 동일성 보장 } } application.yml코드 spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug # org.hibernate.type: trace build.gradle코드 plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' implementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } 인프런 질문에도 찾아보고 구글링도 해봤는데 뭐때문인지 몰라 질문을 합니다 도와주세요ㅠ 아래는 제코드 구글드라이브 공유링크입니다. https://drive.google.com/drive/folders/1h5v97WrZW3rjxwzl_G2_73a17sXsQYpw?usp=sharing

  • JPA
  • spring-boot
  • java
  • spring
  • 웹앱
감바스 댓글 1 좋아요 0 조회수 1917

하이버네이트에서 지연 로딩된 객체의 필드가 null인 현상에 대해 질문드립니다

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요 좋은 강의 감사드립니다. 하이버네이트에서 지연 로딩 사용 시, 지연 로딩된 객체가 초기화 되었음에도 불구하고 필드 접근 시 null이 조회되는 현상에 대해서 질문드립니다. 간단하게 현상을 재현하면 다음과 같습니다. 위와 같이 Member가 Team을 지연 로딩으로 설정한 경우이며, 예시를 위해 Team의 name을 public으로 설정하였습니다. 그리고 다음 코드를 실행하면 발생하는 결과는 다음과 같습니다. 이와같은 오류의 원인을 찾아본 결과 stackoverflow에서 지연 로딩으로 설정된 Proxy 객체의 필드는 모두 null로 세팅한다고 얘기해주었습니다. 그러나 관련된 공식 자료를 찾아볼 수가 없어 정확한 작동 원리에 대해 알고 싶어 질문드립니다. 또한 비슷한 현상으로 스프링에서 Proxy 타입으로 생성된 Bean에 대해서는 내부 필드들을 null로 할당하는 것이 있습니다. 이는 공식 문서에 따르면 Spring AOP에서 메서드 실행 조인 포인트만 제공하며, 필드 가로채기에 대해서는 지원하지 않는다고 나와있었습니다. 혹시 지연 로딩된 프록시 객체의 필드가 null로 세팅되는 현상이 위와 관련있는 현상인지에 대해서도 궁금합니다. 관련된 스프링 공식문서는 다음과 같습니다. https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/aop.html 또한 지연 로딩과 null 세팅에 관한 스택 오버플로우 링크는 다음과 같습니다. https://stackoverflow.com/questions/8945365/jpa-hibernate-proxy-not-fetching-real-object-data-sets-all-properties-to-null 너무 긴 질문 죄송합니다. 항상 감사합니다.

  • java
  • JPA
신동훈 댓글 1 좋아요 1 조회수 619

5:38초 질문입니다!

미해결

실전! Querydsl

5:38 초 부근 member 접근 할때 get 을 쓰면 안된다고 테스트니까 그냥 진행하신다고 하셨는데 이게 어떤의미인지 설명 가능할까요? 한 entity 에 대해서 직접적으로 접근 하기 보다는 dto 같은 전달 객체를 이용해서 가지고 와야 된다. 뭐 이런 뜻인건지 좀더 설명을 듣고 싶어 질문 올립니다!

  • java
  • JPA
dlektl6 댓글 1 좋아요 1 조회수 232

@ModelAttribute 와 @RequestBody 질문입니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요. 강의를 보다가 아직 모호한 부분이 있어서 질문 드립니다. @RequestBody는 Http Message Body 정보를 편리하게 조회할 수 있고 @ModelAttribute 는 파라미터 객체를 생성한 후에 setter를 호출해서 값을 binding 해준다고 하셨는데 그렇다면 @ModelAttribute는 HttpServlet의 기능을 사용하는 거고(get일때는 쿼리스트링 post일때는 Json), @RequestBody는 보내져오는 body 내용을 Json 형태인지 판별하고 보내주는 역할을 한다고 생각하면 될까요?

  • spring
  • MVC
해마 댓글 1 좋아요 2 조회수 349

미인증 사용자 요청에대해서 redirect 할 때

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

httpResponse.sendRedirect("/login?redirectURL=" + requestURI); 라고 되어있는데 queryString의 key 값을 URL로 하는거랑 URI 로 하는거랑 뭐가 더 적절한가여? 강의에서 URL이라했으니 그냥 URL로 적어주면 될까여? 왜냐면 변수명은 requestURI라고 해놓으셔서 궁금해요

  • MVC
  • spring
박재민 댓글 1 좋아요 1 조회수 505

[과제] EnumMap, EnumSet

미해결

이펙티브 자바 완벽 공략 1부

## EnumMap Javadoc에 따르면 "when the map is created. Enum maps are represented internally as arrays. This representation is extremely compact and efficient." -> hashmap 은 key를 bucket에 저장하고각 bucket이 linked list를 참조 하고 있음. (linkedlist에는 hash(key)가 같은 element가 들어감) 그런데 enummap 의 경우 key로 사용할 값이 제한되어 있으므로, 그 갯수만큼 길이를 가진 array를 선언하고. 해당 index에 값을 넣으면 됨. ## EnumSet Javadoc에 따르면 "when the set is created. Enum sets are represented internally as bit vectors." -> hashset은 hashmap 과 같은데 map의 value가 있다 없다를 표현하는 지시자 같은 값이 들어감. enumset은 값이 있다 없다만 표시하면 되니까 enummap 처럼 array로 구현하지 않고 10101011 같은 bitvector로 구현이 가능.

  • java
멜론 댓글 1 좋아요 8 조회수 898

트랜잭션 밖에서 값을 수정했는데 왜 update 쿼리가 발생할까요?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

위의 그림과 같이 트랜잭션을 시작하기 전에 데이터를 수정했는데 update 쿼리가 나가더라구요... 트랜젝션 밖에서는 값의 조회만 가능할 것 같은데 수정이 되는 이유가 궁금합니다!

  • java
  • JPA
JEONG HYUN KANG 댓글 1 좋아요 0 조회수 326

savedRequest.getRedirectUrl()가 null이 들어가서 로그인 후 localhost:8080/null이 나옵니다

미해결

스프링 시큐리티

안녕하세요. localhost:8080/로 들어가서 나오는 시큐리티의 기본 로그인 페이지에서 아무 계정으로 로그인을 하면 localhost:8080/null이 나옵니다. localhost:8080/login로 request를 보냈을떄도 로그인을 하면 localhost:8080/null이 나옵니다 response header를 보면 Location: http://localhost:8080/null 로 나와있고 디버그시에도 savedRequest가 null인게 확인되는데 로그인전에 request로 보낸 url이 httpSessionRequestCache에 저장돼서 로그인 이후 제대로 이동하려면 뭘 수정해야되나요? logout이나 rememberme같은 부차적인 요소들은 가독성을 위해 생략했습니다. 밑에는 코드입니다. // 메모리 방식으로 사용자를 생성하는 configure()는 생략함 @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/login").permitAll() .antMatchers("/user").hasRole("USER") .antMatchers("/admin/pay").hasRole("ADMIN") .antMatchers("/admin/**").access("hasRole('ADMIN') or hasRole('SYS')") .anyRequest().authenticated(); http .formLogin() // .loginPage("/loginPage") .defaultSuccessUrl("/", true) .failureUrl("/login") .usernameParameter("userId") .passwordParameter("passwd") .successHandler(new AuthenticationSuccessHandler() { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { System.out.println("authentication:"+authentication.getName()); // savedRequest가 null로 전달되는게 문제! RequestCache requestCache=new HttpSessionRequestCache(); SavedRequest savedRequest=requestCache.getRequest(request,response); String redirectUrl=savedRequest.getRedirectUrl(); response.sendRedirect(redirectUrl); } }) .permitAll(); // http.logout() 생략 // http.rememberMe() 생략 // http.sessionManagement() 생략 http.exceptionHandling() // .authenticationEntryPoint(new AuthenticationEntryPoint() { // @Override // public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { // response.sendRedirect("/login"); // } // }) .accessDeniedHandler(new AccessDeniedHandler() { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { response.sendRedirect("/denied"); } }); } @RestController @RequestMapping("/") public class SecurityController { @GetMapping public String index() { return "home"; } @GetMapping("loginPage") public String loginPage() { return "loginPage"; } @GetMapping("user") public String user() { return "user"; } @GetMapping("admin/pay") public String adminPay() { return "adminPay"; } @GetMapping("admin/**") public String admin() { return "admin"; } @GetMapping("login") public String login() { return "login"; } @GetMapping("denied") public String denied() { return "denied"; } }

  • Spring Security
  • spring-boot
  • java
gil jung 댓글 1 좋아요 0 조회수 642

여러 개의 쓰레드 풀을 특정 업무에 배정할 수도 있나요?

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

쓰레드 풀을 마련해 백엔드 was를 운영한다고 하셨는데, 이 쓰레드 풀을 특정 기능별로, 요청별로 나눠 여러 쓰레드 풀을 만들어 둘 수도 있나요? 예를 들면 결제 요청들만 처리하는 쓰레드 풀 A와 회원 정보 관리 요청들만 처리하는 쓰레드 풀 B가 있는 것이죠!

  • spring
  • MVC
schbootcamp03 댓글 1 좋아요 2 조회수 325

spring.io

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

버전이 달라서 그런지(최신) spring boot features 가 보이지 않습니다 ㅠ

  • spring-boot
  • spring
  • java
  • MVC
파바배라던도 댓글 2 좋아요 0 조회수 381

자바8로 하면 안되는 걸까요?

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

자바11로 하는 이유가 궁금합니다~~

  • java
  • spring
  • spring-boot
  • MVC
파바배라던도 댓글 1 좋아요 0 조회수 364

GenerationType.SEQUENCE 전략

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 그 GenerationType.SEQUENCE 전략 일때 allocationSize를 지정하면 DB에 key값(id)을 얻기위해 디비에 매번 쿼리를 날리는게 아닌 일정 개수마다 쿼리를 날리기에 최적화가 된다고 하셨고, 그 원리는 메모리를 이용하기 떄문이다라고 하셨습니다. (질문1) 여기서 만약에 어플리케이션이 이중화가 되어있으면, 메모리를 이용한 key값(id) 설정이 조금 이상해질것 같기도한데, 이 부분에 대해서 이상이 없나요? (질문2) 이상이 없다면, 어떻게 처리하는지 알 수 있을까요?

  • JPA
  • java
정태연 댓글 2 좋아요 2 조회수 501

혼자서 삭제 구현중에 Request method 'DELETE' not supported 오류 질문드립니다!

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요 강의 너무 잘 듣고 있습니다!! CRUD중 D가 없어서 직접 구현하던중에 오류에 부딪혔는데 해결할 수 없어서 질문드립니다 ㅠㅠ 먼저 HiddenHttpMethodFilter를 사용해야 HTML Form에서 PUT, DELETE를 사용할 수 있다고 알고있습니다. 따라서 application.properties에 다음과같이 필터를 추가했습니다. # HTML form에서 GET, POST 뿐 아니라 PUT, DELETE도 사용하기 위해서 설정 spring.mvc.hiddenmethod.filter.enabled=true 이후 editForm.html에서도 다음과 같은 delete input태그 및 삭제 버튼을 추가했습니다. <form action="item.html" th:action method="post"> <input type="hidden" name="_method" value="delete"> . . 중략 . <div class="col"> <button class="w-100 btn btn-primary btn-lg" type="submit" th:formaction="|@{/basic/items/{itemId}/edit(itemId = ${item.id})}|">저장 </button> </div> <div class="col"> <button class="w-100 btn btn-primary btn-lg" type="submit" th:formaction="|@{/basic/items/{itemId}/edit/delete(itemId = ${item.id})}|">삭제 </button> </div> </div> </form> 이후 다음과 같이 @DeleteMapping 컨트롤러를 작성했습니다. @DeleteMapping("/{itemId}/edit/delete") public String deleteForm(@PathVariable Long itemId, RedirectAttributes redirectAttributes) { Item deletedItem = itemRepository.delete(itemId); redirectAttributes.addAttribute("itemName", deletedItem.getItemName()); redirectAttributes.addAttribute("status", true); return "redirect:/basic/items"; } 문제가 되는 부분은 삭제 버튼은 잘 동작하고, redirectAttribute까지 잘 적용됩니다만, 오히려 저장 버튼을 누르면 Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'DELETE' not supported] 오류가 발생하네요 아무래도 기존 저장이 POST가 아닌 DELETE로 전송되어 생기는 문제같습니다. 궁금한점은 이렇게 DELETE와 POST를 하나의 폼에서 다른 버튼을 눌렀을때 각각 동작하게 하는 방법은 없고, 각각 다른 폼을 이용해야 하는건지 궁금해서 질문드립니다!! 감사합니다!

  • MVC
  • spring
이호석 댓글 1 좋아요 2 조회수 1959

스프링 컨테이너와 서블릿 컨테이너

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요! 강의를 든던중 궁금한 점이 있어서 이렇게 질문 남깁니다. 스프링 컨테이너는 서블릿 컨테이너의 한 종류라고 인식을 해도 되는걸가요?

  • spring
  • MVC
최지환 댓글 2 좋아요 1 조회수 2686

MemberForm의 패키징 위치?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

강의 초반부에 MemberForm객체를 domain 패키지가 아닌 controller 패키지에 생성하시는 이유가 MemberForm 객체의 주 사용 클래스가 controller여서가 맞는지 궁금합니다..!

  • 패키지
  • JPA
  • spring
  • 웹앱
  • spring-boot
  • java
study4 댓글 1 좋아요 0 조회수 361

강의자료

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

영한님이 강의할 때 사용하시는 강의자료(?)는 따로 업로드 안되어있는건가요? 제가 못찾는거인지 궁금합니다.... 베어라고 되어있는데 이 자료가 따로 업로드되어 있는지 궁금합니다..!!

  • java
  • spring-boot
  • spring
  • MVC
WOOKI 댓글 1 좋아요 0 조회수 516

인기 태그

인프런 TOP Writers

주간 인기글