묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
초록색 주석문은 뭔가요 .. !
pdf 교안 보면 이런식으로 되어있는 초록색 주석문? 이 있던데그냥 인텔리제이에서는 // 나 /* */ 했을 때 회색으로만 표시되고 저렇게 초록색으로는 안 표시되더라구요 ... 저거는 뭔가요 ?생성 단축키도 알려주시면 감사하겠습니다 ...
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
join과 join fetch 의 차이 ..
OrderQueryRepository 에 findAllByDto_flat 보면다 join 으로 되어있는데 join과 join fetch (페치 조인)의 차이점은 뭔가요 ..?join도 lazy 로 되어있는거 한번에 끌고오는 건 비슷한 거 같은데 .. ㅜ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Failed to load ApplicationContext 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]package hellospring11.hellospring.service; import hellospring11.hellospring.repository.JdbcMemberRepository; import hellospring11.hellospring.repository.JdbcTemplateMemberRepository; import hellospring11.hellospring.repository.MemberRepository; import hellospring11.hellospring.repository.MemoryMemberRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import hellospring11.hellospring.service.MemberService; import javax.sql.DataSource; // 자바 코드로 스프링 빈 등록 // 실무에서는 이것 보다는 autowired를 사용 하는데 이방법은 리포지토리를 쉽게 변경을 할 계획이라서 일딴 이렇게 사용 @Configuration public class SpringConfig { private final DataSource dataSource; @Autowired public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ //return new MemoryMemberRepository(); //return new JdbcMemberRepository(dataSource); return new JdbcTemplateMemberRepository(dataSource); } }package hellospring11.hellospring.repository; import hellospring11.hellospring.domain.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; // 생성자가 하나면 오토와이어드 생량 가능 public JdbcTemplateMemberRepository(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } @Override public Member save(Member member) { SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate); jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id"); Map<String, Object> parameters = new HashMap<>(); parameters.put("name", member.getName()); Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters)); member.setId(key.longValue()); return member; } @Override public Optional<Member> findById(Long id) { List<Member> result = jdbcTemplate.query("select * from member where id = ?", memberRowMapper(), id); return result.stream().findAny(); } @Override public Optional<Member> findByName(String name) { List<Member> result = jdbcTemplate.query("select * from member where name = ?", memberRowMapper(), name); return result.stream().findAny(); } @Override public List<Member> findAll() { return jdbcTemplate.query("select * from member", memberRowMapper()); } // 람다 함수로 만듬 private RowMapper<Member> memberRowMapper(){ return (rs, rowNum) -> { Member member = new Member(); member.setId(rs.getLong("id")); member.setName((rs.getString("name"))); return member; }; } }MemberServiceIntegrationTest 테스트 파일에서 코드를 실행하는데 계속 오류가 나옵니다.@WebAppConfiguration, @ContextConfiguration() 어노테이션을 추가 해보았는데도 오류가 발생하고 데이터베이스 서버는 실행되어 있습니다.
-
미해결스프링 시큐리티 OAuth2
소셜로그인 + Jwt 인증 어떻게 하나요?
소셜로그인 성공 이후 JWT 인증하는 방법을 알고 싶어 강의를 수강했습니다.소셜로그인과 JWT 인증을 어떻게 같이 쓰는지 예시를 알려 주실 수 있나요실무에 바로 적용하고 싶은데 강의에서 보여 소셜로그인, JWT 인증 강의만으론 소셜로그인 성공 이후 어떻게 토큰을 발급해 react 또는 모바일 네이티브 앱의 사용자을 로그인, 회원가입시키는지 모르겠네요.샘플 코드를 첨부해주시면 감사하겠습니다.
-
미해결토비의 스프링 부트 - 이해와 원리
강의 초반에 나오는 코드에서 에러가 납니다.
0:05초 부분에서 applicationContext를 익명클래스가 아닌 람다 표현식으로 바뀌어져있는데, 이 부분을 그대로 따라 쳤는데, 에러가 납니다. public static void main(String[] args) { AnnotationConfigWebApplicationContext applicationContext = onRefresh() -> { super.onRefresh(); ServletWebServerFactory serverFactory = this.getBean(ServletWebServerFactory.class); DispatcherServlet dispatcherServlet = this.getBean(DispatcherServlet.class); WebServer webServer = serverFactory.getWebServer(servletContext -> { servletContext.addServlet("dispatcherServlet", dispatcherServlet) .addMapping("/*"); }); webServer.start(); }; applicationContext.register(HellobootApplication.class); // 구성정보가 있는 클래스 등록 applicationContext.refresh(); } } onRefresh() -> {... }이 부분이 이해가 잘 되지 않는데, 어느 부분이 잘못된 건가요?AnnotationConfigWebApplicationContext applicationContext = onRefresh() -> { super.onRefresh();
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
9분 05초 author이랑 isbn
author이랑 isbn이 null로 나와있는데 싱글테이블에서 Album이랑 Movie에 관련된 컬럼은 안나오고 딱 Book이랑만 관련된 author이랑 isbn 만 null로 표시됐는데 이건 JPA가 Book인 걸 알아서 그것만 표시해주는건가요 ?? 어떻게 author이랑 isbn만 표시해주게 되는건지 궁금합니다 ..
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
JPA 강의 - delete 구현시 에러 발생합니다.
안녕하세요.강의 잘 듣고 있습니다.현재 JPA 강의 - delete 부분을 수강 중입니다.그런데, 컨트롤러에 아래 코드 추가 후 response에 403 에러 (foobidden) 이 출력됩니다.security에 아래 코드처럼 설정해 줬는데도 에러가 나니, 이유를 모르겠습니다. ;;;;@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.authorizeRequests((auth) -> { auth.antMatchers("/jpa/users").permitAll(); }); return http.build(); }@DeleteMapping("/users/{id}") public void deleteUser(@PathVariable int id) { userRepository.deleteById(id); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 가입> 등록 후 회원목록 조회가 되지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원가입 > 등록 후 회원목록 조회가 되지 않습니다. https://drive.google.com/file/d/1mo2EohoMsgKRpeusyQ-AXlygE1CSSJIV/view?usp=sharing코드 링크입니다. WhiteLabel Error Page 오류가 납니다.
-
미해결스프링 시큐리티 OAuth2
oauth2clinet api 사용 이유?
시큐리티 필터체인 구성 시 oauth2login api를 사용하면 되는데 굳이 oauth2client를 사용할 이유가 어떤것이 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트 코드는 실행이 잘 되지만 실제 DB에는 올라가지 않아요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 TEST코드가 실행은 잘 되지만 실제 DB에 올라가지 않는 문제가 있습니다. 도움을 받을 수 있을까 해서 올려봅니다.https://drive.google.com/file/d/1dLceWpDp71m9dsvZXlVEfKa1db8M885g/view?usp=sharing파일링크입니다!
-
미해결실전! 스프링 데이터 JPA
Setter, Merge, InvalidDataAccessApiUsageException Error
안녕하세요. Setter를 사용하고 싶지 않아서 아예 Setter를 사용하지 않는 방향으로 코드를 작성중입니다.Member1의 이름을 Member 1에서 Updated Member로 바꾸기 위해서 setUsername 함수를 사용하지 않고, 처음에 Member1의 아이디를 그대로 받는 생성자를 만들어서 이름 빼고 모두 똑같이 맞춰주고 Save를 하면 될 줄 알고 코드를 이렇게 작성했는데InvalidDataAccessApiUsageException:detached entity passed to persist라는 에러를 얻게 됬습니다.newMember1이라는 객체에 따로 뭘 하지도 않았는데 Detached 상태라고 해서 조금 의아해서 찾아봤는데 이미 영속성 컨텍스트에 id가 1인 Member1이 있는 상태에서 갑자기 쌩뚱맞게 똑같은 Identifier를 가진 NewMember를 Persist하려고 하니 생긴 오류인걸 알게 됬습니다.그래서 Setter없이 하는 방법은 정말 없을까 하다가 해당 글을 발견하게 되었고, 아래 스샷과 같이 Comment를 참고 해서, 해당 Oracle Reference에서 Merge라는 Method를 알게되었고(조금 밑으로 스크롤을 내려야합니다.) 현재 영속성 컨텍스트에 매개변수로 받은 Entity의 상태를 Merge한다는 내용이 제가 원래 하려던 생각과 맞는것 같아생각과 비슷한 것 같아 사용해 보았습니다.이렇게 Merge를 사용한 테스트코드에서는 테스트가 통과되고, 실제 DB에도 Member1의 이름이 Updated Member로 변경이 되었습니다. (Update Query도 실제로 실행되는것을 확인할 수 있었습니다.)JPA가 변경 감지를 통해서 Update를 해준다는것과 그게 정석이라고 말씀해 주셨고, 그렇게 JPA의 변경 감지를 사용하는게 상태를 마치 값변수처럼 직접 변경하는것 보다 좋을 것 같습니다.하지만 change~ 함수나 아래와 같이 다른 Setter를 대신하겠다고 만든 여러 함수들에서 이름만 set이 안들어갔지 결국 그 함수의 내용은 Setter랑 다를바가 없는데 이게 Setter를 사용하는것과 무슨 차이가 있는지 잘 모르겠습니다. Lombok의 @Setter를 사용해서 단지 모든 프로퍼티에 대해서 Setter를 만들어주지않고 개발자가 직접 지정한 부분만 Setter를 만들어 줄 수 있다는 측면에서는 차이가 있는것 같습니다.또한 제가 이렇게 Merge를 사용해서 Update를 하는게 확실히 다른 개발자 분들이 잘 사용하지 않은 방법인것 같긴합니다. 혹시 이렇게 Merge를 사용하는것에 대해서 어떠한 의견을 가지고 계신지 궁금합니다!감사합니다 :D
-
미해결실전! 스프링 데이터 JPA
Production에서의 p6spy의 보안문제는 생기지 않을까요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요. Production에서 p6spy의 사용에 대한 질문 드립니다. 성능을 고려해봐야한다고 말씀해주셨는데, 그것에 더해 p6spy에 의해 출력된 데이터가 만약 상당히 민감한 정보(비밀번호, 개인정보)를 출력하게 된다면 보안상 이슈도 고려를 해야하지 않을까라는 생각이 듭니다! 혹시 이 부분에 대해서 어떤 의견을 가지고 계신지 여쭤보고 싶습니다! 감사합니다 :D
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
run이 안뜹니다.
인터넷에서 여러가지 세팅을 찾아서 맞춰놓긴 했는데 아직도 초록색 동그라미 부분에 run 버튼이 활성화가 안됩니다.
-
미해결스프링 부트 - 핵심 원리와 활용
프로메테우스, 그라파나 설치 서버 위치
[질문 내용]강의에서는 프로메테우스와 그라파나를 개발용 PC 와 같은 localhost 에 설치하였는데,이것은 강의 교육용이기 때문에 localhost 에 설치한 것인가요?실제 운영시에는 프로메테우스 서버 또는 그라파나 서버를 별도로 운영하나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
실전 강좌 내용중에 로그인,로그아웃 구현 관련 항목이 있나요?
실전 강좌 내용중에 로그인,로그아웃 구현 관련 항목이 있나요?항목을 뒤져보는데 저는 안보여서 혹시 제가 몰라서 그런지 확인차 문의드립니다 감사합니다
-
미해결스프링 부트 - 핵심 원리와 활용
Lombok 생성자
@Data public class Member { private String memberId; private String name; public Member() { } public Member(String memberId, String name) { this.memberId = memberId; this.name = name; } } 기본생성자와 모든필드를 가지는 생성자도 Lombok을 통해서 @NoArgsConstructor @AllArgsConstructor로 어노테이션으로 등록할 수 있는걸로 알고 있는데 @Data만 사용하고 생성자는 어노테이션으로 등록 안하시는 이유가 있을까요?@Data의 경우 @Setter을 포함하기 때문에 조심히 사용해야 된다 하셨는데 이처럼 주의해야 될 점이 있는건지 궁금합니다
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 설계 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의내용을 듣고 엔티티 설계중입니다.상품, 게시판, 문의게시판 등에서 공통으로 사용할 Image엔티티를 만드려고 합니다.이미지 테이블의 FK는 상품,게시판,문의게시판의 PK가 되게 만드려고 합니다.여기서 강의대로 상품,게시판,문의게시판의 PK를 시퀀스로 하게 되면 이미지테이블입장에서 FK가 가르키는게 상품인지, 게시판인지 모르는 문제가 발생합니다. 이럴때 실무에서는 상품,게시판 등의 PK에 prefix값을 넣어주나요? 아니면 시퀀스로 만들고, 이미지테이블에 구분값을 만들어주나요? 아니면 아예 다른 구조로 풀어내는지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
섹션 1 프로젝트 환경설정 - JPA와 DB 설정, 동작확인 부분 오류
프로젝트 환경설정 섹션에서 JPA와 DB설정, 동작확인 강의에서 오류가 납니다. 위 사진에서 SpringRunner 부분이 노란색으로 안칠해져 있어서 JUnit4가 제대로 설정이 안됐나 싶어서 강의 자료와 똑같이 타이핑 했는데 위 사진처럼 useJUnintPlatform부분이 회색으로 비활성화가 되어있습니다. 이거 때문에 오류가 나는거 인가 싶습니다. 오류 메세지를 확인해보니 JUnit4 추가 부분을 코드에 추가하던 안하던 똑같은 오류가 생기는거 보니까 저 회색이 문제인거 같은데 어떻게 해결해야할지 모르겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
궁금한 점이 생겨 질문 남겨봅니다.
자바 서비스로직의 트랜잭션내에서 오류가 발생하면 롤백이 될건데, 그러한 오류사항을 DB에 어떻게 로그로 남길 수 있는지 알 수 있을까요???
-
해결됨스프링 시큐리티
authenticationProvider, secret_key 관련 질문
현재 문제 상황이 이렇습니다.secret_key value 가 "secret" 이 아니여도 정상적으로 로그인 되버립니다. 그래서 SecurityConfig 설정을 잘못해서 authenticationProvider 나 authenticationDetailSource 가 정상적으로 작동을 안하는지 의심되서 각각 코드에 break 를 걸고 debug 를 돌렸더니 break 가 걸려서 돌아갑니다. 그리고 진짜 진짜 신기한게 secret_key 가 null 인게 debug 모드에서 확인됩니다.그리고 secret_key == null 이 true 인게 확인됩니다. 그런데 exception 이 작동을 안하고 그냥 로그인이 되버립니다. 대체 이게 무슨일인거죠.. https://github.com/Hosung-Ahn/backend-practice/tree/main/demo-security코드로 봐주시면 너무 감사할 것 같습니다..