묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
AbstractGatewayFilterFactory 적용 문제
현재 spring 3.2 버전에서 강의를 따라가고 있습니다. AbstractGatewayFilterFactory를 찾지 못하는 것 같습니다. 혹시 해결방법이 있을까요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 gradlew build 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.다음과 같이 오류가 발생하는데 어떻게 해야하나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 오픈 초기 오류..;;;;
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 프로젝트 다운설정인텔리J 프로젝트 설정오류 내용 : 아래 내용보다 길지만 첫줄과 마지막 줄만 첨부 합니다.1. 초기2. 마지막 제가 어떤 부분을 고쳐야 할까요? 자바 기본 배우고 바로 넘어왔는데 처음 부터 막히니 막막하네요..;;;
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제 프로젝트 삭제와 프로젝트 실행 오류
5강을 듣다가 제 화면과 강사 선생님과 화면이 달라서 프로젝트를 삭제 했습니다. 그런 뒤 다시 프로젝트를 오픈했는데 저런 화면이 뜨면서 실행되지 않고 오류가 생깁니다.프로젝트를 삭제하고 캐쉬도 삭제 하고, 심지어 인텔리제이도 삭제해봤는데 여전히 저런 화면이 뜹니다. 어떻게 해야되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 서버를 모바일에 띄울 수 있나요?
안녕하세요 이번에 강의를 완강하고 스프링을 이용한 프로젝트를 해보려고합니다.해보고 싶은 건 잠금화면 단어장 앱입니다.휴대폰을 키면 나오는 잠금화면에 단어장에서 랜덤한 단어가 나와서 단어를 복습할 수 있고제가 단어를 직접 등록할 수도 있고, 검색할 수도 있도록 만들고 싶습니다.제가 생각하기로는 스프링 웹 서버를 휴대폰에 띄우고, DB도 휴대폰 내부 메모리에 띄우도록 작업하려고 하는데. 이게 가능한 것인지 궁금합니다.또한 안드로이드 스튜디오를 써서 개발할 생각인데 안드로이드 스튜디오로 스프링 프로젝트를 생성하는 것부터 어떻게 해야할지 감이 잘 오지 않습니다. 제가 정말 개발초보라 질문이 두서 없지만 어떻게 해야할지 조언 부탁드립니다. 참고할만한 자료도 있으면 부탁드리겠습니다..!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 데이터테이블이 안만들어져요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1h-MGfbVOOqUMAtIrqo7Ys52FE4UnV9Am/view?usp=drive_linkMemberRepository를 실행했을 때 오류가 떠요어쩔 수 없이 뒷강의를 듣다가 앞으로 넘어오게 돼서 Order나 Item, Delivery 클래스들이 만들어져 있는데 이것들 때문일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
복사가 이상하게 됩니다. 어떻게 고쳐야할까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.jdbc.datasource.DataSourceUtils; import javax.sql.DataSource; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Optional; public class JdbcMemberRepository implements MemberRepository { private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource) { this.dataSource = dataSource; } @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getLong(1)); } else { throw new SQLException("id 조회 실패"); } return member; } } } } catch (Exception e) { throw new IllegalStateException(e); finally { close(conn, pstmt, rs); @Override public Optional<Member> findById(Long id) { String sql = "select * from member where id = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1, id); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } else { return Optional.empty(); } } } } } catch (Exception e) { throw new IllegalStateException(e); finally { close(conn, pstmt, rs); @Override public List<Member> findAll() { String sql = "select * from member"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); List<Member> members = new ArrayList<>(); while(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); members.add(member); } } } } } return members; catch (Exception e) { throw new IllegalStateException(e); finally { close(conn, pstmt, rs); @Override public Optional<Member> findByName(String name) { String sql = "select * from member where name = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } return Optional.empty(); } } } catch (Exception e) { throw new IllegalStateException(e); finally { close(conn, pstmt, rs); } private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); } private void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) { close(conn); } } catch (SQLException e) { e.printStackTrace(); } } private void close(Connection conn) throws SQLException { DataSourceUtils.releaseConnection(conn, dataSource); } }이런식으로 복사됩니다. 매번 이래서 크롬으로 변경해서 복사해도 똑같네요..
-
미해결스프링 시큐리티 OAuth2
Token Decoder
저는 업무 환경 상 버전이 다르게 진행하고 있고,org.springframework.boot version "3.2.1"security version "6.2.1"개념과 과정을 강의를 통해 도움 받고 있습니다.궁금한 것은 Authorization Server 에서 강사님이 설정하신 바와 같이 JwtSource 설정을 넣으니, Resource Server 에서 다른 알고리즘으로 파싱이 안된다는 에러가 나더라구요.@Bean public JWKSource<SecurityContext> jwkSource() throws NoSuchAlgorithmException { RSAKey rsaKey = generateRsa(); JWKSet jwkSet = new JWKSet(rsaKey); return (jwkSelector, context) -> jwkSele ctor.select(jwkSet); }[DefaultJWTProcessor]new BadJOSEException("Signed JWT rejected: Another algorithm expected, or no matching key(s) found"); Authorization server 에서 Token발행 과정을 디버깅하면DelegatingOAuth2TokenGenerator > JwtGenerator에서 alg : RS256, encoder 는 NimbusJwtEncoder 로 토큰이 저장됩니다. Resource 서버에서 NimbusJwtDecoder 를 통해 진행되기는 하나 header key 가 RSA 로 들어오던데요. Authorization server 의 jwkSource 설정을 모두 주석처리하니, 더 이상 키 불일치 에러는 발생하지 않더라구요. 버전 상의 문제일지 양쪽 서버에 뭔가 다른 설정이 필요했을지 궁금해서 문의 남깁니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
태현님 안녕하세요!
좋은강의 만들어주셔서 감사합니다.잘보고있습니다. 테스트 코드 관련 궁금증이 생겨서 문의드립니다.BeforeEach 나 AfterEach 를 사용해서deleteAll() 등을 할때 Mysql 같은 DB 보다 In memory db가 조금더 적합할것같은데요 혹시현업에서도 로컬환경으로 개발하실때 DB 를 H2 In Memory DB 를 주로 사용하여 개발하셨는지 궁금합니다 !
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
프록시 초기화 안했는데 조회되는 경우가 있나요?
@GetMapping("/api/v2/orders") public List<OrderDto> ordersV2() { List<Order> orders = orderRepository.findAllByString(new OrderSearch()); return orders.stream() .map(order -> new OrderDto(order)) .collect(Collectors.toList()); } @Getter static class OrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private Address address; private List<OrderItem> orderItems; public OrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); orderDate = order.getOrderDate(); address = order.getDelivery().getAddress(); orderItems = order.getOrderItems(); } }안녕하세요!강의 잘 듣고 있습니다~제가 OrderDto 안에 있는데 orderItem을 초기화 하지 않았는데, null로 반환되지 않고 db에 있는 값으로 반환이 되어서요..! (jpa 활용2편 강의 섹션 4에선 null로 찍힙니다)혹시 프록시는 초기화하지 않아도 그대로 값이 응답에 반영되는건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
/actuator/metrics 에서 names 값에 대한 질문
스프링 부트 버전 : 3.2.2JDK : 17 spring cloud gateway 를 사용하여127.0.0.1:8000/user-service/welcome, 127.0.0.1:8000/user-service/heath_check 주소를 호출했습니다.http://127.0.0.1:8000/user-service/actuator/prometheus 를 호출결과 중 일부입니다.# HELP http_server_requests_seconds # TYPE http_server_requests_seconds summary http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/heath_check",} 5.0 http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/heath_check",} 0.020372399 http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 1.0 http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 0.8039679 http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/health",} 1.0 http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/health",} 0.0116107 http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/welcome",} 3.0 http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/welcome",} 3.827017999 http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/metrics",} 8.0 http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/metrics",} 0.039744298 http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="404",uri="/**",} 1.0 http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="404",uri="/**",} 0.014729801 http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/info",} 1.0 http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/info",} 0.090424499 # HELP http_server_requests_seconds_max # TYPE http_server_requests_seconds_max gauge http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/heath_check",} 0.003873199 http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 0.8039679 http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/health",} 0.0 http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/welcome",} 0.0 http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/metrics",} 0.0 http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="404",uri="/**",} 0.0 http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/info",} 0.0http://localhost:8000/user-service/actuator/metrics 를 호출결과 names 배열값에강의화면과 다르게 users.welcome, users.status 값이 없습니다. pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-brave</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-micrometer</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> <version>2.2.8.RELEASE</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> application.ymlmanagement: endpoints: web: exposure: include: refresh, health, beans, busrefresh, info, metrics, prometheus tracing: sampling: probability: 1.0 propagation: consume: b3 produce: b3 zipkin: tracing: endpoint: "http://localhost:9411/api/v2/spans" controller.javapackage com.example.userservice.controller; import com.example.userservice.dto.UserDto; import com.example.userservice.jpa.UserEntity; import com.example.userservice.service.UserService; import com.example.userservice.vo.Greeting; import com.example.userservice.vo.RequestUser; import com.example.userservice.vo.ResponseUser; import io.micrometer.core.annotation.Timed; import org.modelmapper.ModelMapper; import org.modelmapper.convention.MatchingStrategies; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @RestController public class UserController { private Environment env; private UserService userService; @Autowired private Greeting greeting; public UserController(Environment env, UserService userService) { this.env = env; this.userService = userService; } @GetMapping("/heath_check") @Timed(value = "users.status", longTask = true) public String status() { return String.format("It's Working in User Service " + ", port(local.server.port)=" + env.getProperty("local.server.port") + ", port(server.port)=" + env.getProperty("server.port") + ", port(token.secret)=" + env.getProperty("token.secret") + ", port(token.expiration_time)=" + env.getProperty("token.expiration_time") ); } @GetMapping("/welcome") @Timed(value = "users.welcome", longTask = true) public String welcome() { // return env.getProperty("greeting.message"); return greeting.getMessage(); } @PostMapping("/users") public ResponseEntity<ResponseUser> createUser(@RequestBody RequestUser user) { ModelMapper mapper = new ModelMapper(); mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); UserDto userDto = mapper.map(user, UserDto.class); userService.createUser(userDto); ResponseUser responseUser = mapper.map(userDto, ResponseUser.class); return ResponseEntity.status(HttpStatus.CREATED).body(responseUser); } @GetMapping("/users") public ResponseEntity<List<ResponseUser>> getUsers() { Iterable<UserEntity> userList = userService.getUserByAll(); List<ResponseUser> result = new ArrayList<>(); userList.forEach(v -> { result.add(new ModelMapper().map(v, ResponseUser.class)); }); return ResponseEntity.status(HttpStatus.OK).body(result); } @GetMapping("/users/{userId}") public ResponseEntity<ResponseUser> getUser(@PathVariable String userId) { UserDto userDto = userService.getUserById(userId); ResponseUser returnValue = new ModelMapper().map(userDto, ResponseUser.class); return ResponseEntity.status(HttpStatus.OK).body(returnValue); } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
타입을 MemberRepository로 할때와 MemoryMemberRepository로 할때의 차이점이 뭔가요?
MemoryMemberRepository repository = new MemoryMemberRepository(); MemberRepository repository = new MemoryMemberRepository();두 타입으로 설정했을때의 차이가 알고싶어요.
-
미해결스프링 시큐리티 OAuth2
2024-2-20일 기준 인텔리제이에서 모듈 설정하는 방법입니다.
혼자 삽질을 많이 해서 다른 분들은 혈압이 오르지 않기를 바라는 마음으로 정리한 글을 공유합니다.https://literate-t.tistory.com/433
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
RabbitMq 에 대해
현재 강의에서 RabbitMq를 사용하여 어떻게 각각의 서버로 변경된 데이터를 전달하는지 아키텍처가 궁금합니다. 각각의 서버는 RabbitMq서버를 구독하고있는건가요?푸시방식이라고 했는데 각각의 서버가 RabbitMq의 큐에서 메시지를 가져가는 폴링방식이 아닌가요?구독하고있는 각 서버로 브로드캐스트하여 푸시하는 방식이지 폴링방식이 아니라는건가요?busrefresh를 통하여 큐에 메시지를 발행하고, 각 서버는 큐에서 메시지를 꺼내어가져가는건가요(폴링)? 아니면 큐에서 메시지를 RabbitMq가 직접 각각의 서버로 전송하는 푸시방식인가요? 푸시방식이 맞다면 AMQP프로토콜로 서버들이 실행할때마다 이미 연결이 되어있는 상태를 유지하고 있기 때문에 푸시가 가능한건가요?원리가 궁금합니다..
-
미해결스프링 시큐리티 OAuth2
password() deprecated
OAUth2AUthorizedClientProviderBuilder.builder() 에서 password() api 가 deprecated 가 됐는데 어떻게 사용해야할까요?
-
미해결토비의 스프링 부트 - 이해와 원리
GenericWebApplicationContext : boot 2.* 와 3.* 차이
안녕하세요 토비님 토비님에 강의 어노테이션 매핑 정보 사용강의 내용 중 GenericWebApplicationContext를 사용해서 @RequestMapping이 스프링 부트 2.7에서는 정상적으로 동작을 하는데요 스프링 3.* 에서는 404가 뜨는 상황입니다. GenericWebApplicationContext가 뭔가 변한걸까요? 로그를 보면 3.*는 아예 리플래쉬가 안되는것 같은 느낌이 듭니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
RequestParam 질문 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제대로 이해하고 있는지 궁금합니다@GetMapping("hello-api") @ResponseBody public Hello helloApi(@RequestParam("name") String name) { Hello hello = new Hello(); hello.setName(name); return hello; }1. GetMapping은 브라우저에서 쓰이는 주소 ? 를 뜻하는게 맞나요localhost:8080/hello-api 라는 주소를 입력하면컨트롤러에서 주소에있는 hello-api와 일치하는 메서드인 Hello helloApi를 연결해서 실행2. @RequestParam("name")은 http://localhost:8080/hello-api?name=abcd에서name을 뜻하고 String name 이 abcd를 의미하는건가요 ?abcd라는 값은 setter 메서드로 설정한것은 알고있습니다
-
해결됨토비의 스프링 부트 - 이해와 원리
섹션 9 세번째 강의 문의
안녕하세요. 강의 정말 잘 보고 있습니다. 다름이 아니라 섹션9 세번째 강의 jdbc transaction manager 설정 및 테스트 하는 과정에서 마지막 부분에 첫번째 테스트는 통과 하지만 두번째 테스트는 실패합니다라고 설명 해주셨는데요, 아래 실제 콘솔을 보면 두번째 테스트가 성공 하고 첫번째 테스트가 실패 하고 있습니다. 그래서 궁금한 점은 junit에서 각 테스트는 코드상에서 위아래와 무관 하게 각 테스트 메서드가 병렬적으로 동작 하고, 그 과정에서 먼저 디비를 터치하고 트랜잭션을 완료 한 테스트가 먼저 성공 하는 것 인지 궁금 합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2연동문제가 생겼습니다. 계속 되지를 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 강의 정말 잘보고있고, 차분히 잘 따라하고 있습니다.처음엔 되다가 한번 끄고나서 다시 해보니, h2연동이 안되서 질문드립니다. mac 환경이며, rm test.db도 해보고 통합환경테스트를 할때, 더이상 업데이트 반영이 안되고, 검색해서 연동하란대로 해봤는데 전혀 되지가 않습니다...항상 좋은 강의 해주셔서 감사하며, 시간날때 답변 부탁드립니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cannot find symbol class MemberForm 오류발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.MemberController.java 를 실행시키면 아래와 같이 오류가 발생하는데 무엇이 문제일까요?