묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
html 복사
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]혹시.. 해당 코드들 복사해서 넣는데 자꾸 이쁘게 복사가 안되고 몇몇부분이 빠져서 복사되고 그렇습니다. 양이 되게 많은데 혹시 팁이 있을까요? 다 제가 수기로 작성해야할까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
별도의 쓰레드를 만드는 원리
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요!!최근 병행해서 공부하고 있는 멀티 쓰레딩 개념을 도입해서 정리한 게 맞나 확인하고 싶어서 이렇게 남겨봅니다.별도의 쓰레드를 만드는 이유: 커넥션 풀에 채우는 작업 자체가 CPU 점유 시간(cpu time)이 커서별도의 쓰레드가 생긴 이유: HikariCP 라이브러리를 만든 개발자가 코드를 그렇게 작성 쓰레드 관리: 자바의 쓰레드 풀에 있는 쓰레드는 유저 레벨 쓰레드이고 os레벨의 쓰레드와 매핑되어서 사용하는데 이 멀티 쓰레딩 자체는 결국 cpu가 cpu 스케줄링을 통해서관리(= 컨텍스트 스위칭)항상 감사합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
test 코드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]test 코드 돌렸을떄 이거 안뜨는법없나요?
-
해결됨스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException & NoUniqueBeanDefinitionException 2
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [E:\java-spring-basic-review\myStudy\out\production\classes\hello2\myStudy\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository ... Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository질문 한 번 올렸는데 ai답변이 와서 거기서 본 링크쪽으로도 갔는데 문제를 모르겠습니다...3시간 동안 찾아보고 해결해보려하는데 되지 않습니다... 도와주세요.https://drive.google.com/file/d/1cBsUxNQ27kT1rdo6R-s0iuNEGOC7paFG/view?usp=drive_link혹시몰라 파일도 올립니다ㅠㅠ 정말 알 수가 없습니다...
-
해결됨스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException & NoUniqueBeanDefinitionException
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [E:\java-spring-basic-review\myStudy\out\production\classes\hello2\myStudy\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository ... Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository 복습하는 중에 전체 테스트를 돌렸는데 MyStudyApplicationTests에서만 오류가 납니다.정말 해결하려 노력해보았으나, 머리박고 헤드뱅이 100바퀴 돌정도로 모르겠습니다.생각해봤을 때, appConfig와 AutoAppConfig에서 같은 타입의 빈이 2개 생성돼서 오류가 나는 거 같은데...정확히 어디가 잘 못된 건지 고칠 방법이 뭔지 알 수가 없습니다...도와주세욤....
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
개인프로젝트에서 Datasource dataSource 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]리포지토리인 Dto 클래스에 private final DataSource dataSource시 Could not autowire. No beans of 'DataSource' type found.라는 오류가 뜨면서 빌드가 안 됩니다! 서비스에서 트랜잭션을 쓰지는 않지만 DataSource를 적용해보고 싶었는데 안 되네요 ㅠㅠ package com.spring.dto; import com.spring.dao.member.Member; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import javax.sql.DataSource; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; @Repository @RequiredArgsConstructor public class JDBCMemberDto implements MemberDto{ private final DataSource dataSource; // 테이블 열 private static final String TABLE_NAME = "USERS"; private static final String ID_COLUMN = "ID"; private static final String USERID_COLUMN = "USERID"; private static final String PASSWORD_COLUMN = "PASSWORD"; private static final String NAME_COLUMN = "NAME"; @Override public Member save(Member member) { String query = "INSERT INTO " + TABLE_NAME + " (" + ID_COLUMN + ", " + USERID_COLUMN + ", " + PASSWORD_COLUMN + ", " + NAME_COLUMN + ") VALUES (SEQ_USER.NEXTVAL, ?, ?, ?)"; try (Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement(query)){ pstmt.setString(1, member.getUserId()); pstmt.setString(2, member.getPassword()); pstmt.setString(3, member.getName()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } return findByUserId(member.getUserId()).get(); } @Override public Member findById(Long id) { Member member = new Member(); String query = "SELECT * FROM USERS WHERE id = ?"; try (Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement(query)){ pstmt.setLong(1, id); ResultSet rs = pstmt.executeQuery(); if(rs.next()) { member.setId(rs.getLong(ID_COLUMN)); member.setUserId(rs.getString(USERID_COLUMN)); member.setPassword(rs.getString(PASSWORD_COLUMN)); member.setName(rs.getString(NAME_COLUMN)); } else { throw new NoSuchElementException("유저를 찾을 수 없습니다. memberId=" + id); } } catch (SQLException e) { e.printStackTrace(); } return member; } @Override public Optional<Member> findByUserId(String userid) { return findAll().stream() .filter(member -> member.getUserId().equals(userid)) .findFirst(); } @Override public List<Member> findAll() { List<Member> list = new ArrayList<>(); String query = "SELECT * FROM USERS"; try (Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement(query)){ pstmt.executeUpdate(); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { Member member = new Member(); member.setId(rs.getLong(ID_COLUMN)); member.setUserId(rs.getString(USERID_COLUMN)); member.setPassword(rs.getString(PASSWORD_COLUMN)); member.setName(rs.getString(NAME_COLUMN)); list.add(member); } } catch (SQLException e) { e.printStackTrace(); } return list; } private Connection getConnection() throws SQLException { Connection connection = dataSource.getConnection(); return connection; } }
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인프런 강의 재생이 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]시작 전 검은화면에서 재생이 멈춰서 재생이 안됩니다, 쿠키, 세션 모두 삭제 해봤는데 재생이 안되네요 ㅜㅜ 보니까 다른 강의들은 모두 재생이 됩니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jpa 활용 1편 코드 이어서 하는거죠?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]jpa 활용 1편에서 라이브 코딩했던 것들을 이어서 하는거 맞죠? 따로 jpa 활용 1편까지 구현한 코드만 올려놓은 소스 파일이 없어서 jpa 활용 1편에서 듣고 코딩했던 것들 이어서 해도되는거 맞는 거죠?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
Service, Repository를 interface로 만들었을때 궁금한게 있습니다.
테스트 코드를 작성할 때 DIP를 이용해서 결합도를 낮추고, 빠르게 테스트를 하는 것을 확인하였습니다.궁금한 점은 interface로 서비스 레파지토리를 선언해서 사용하면,인터페이스 자체가 어떻게보면 다형성을 위해 도면을 구성한다고 생각되는데, FakeImpl을 만들기위해서 너무 많이 다형성을 사용하는게 아닌가 싶은 생각도 들어서요. 초기 프로젝트에는 오버엔지니어링이 되지는 않을까 고민이 됩니다.소스코드 관리하는 점에서 따라가기 쉽지 않은 것을 느꼈습니다. 물론 패키지 구조를 잘 알고 있는 사람이라면 쉽게 접근하겠지만, 그렇지 않은 사람이 코드를 분석했을 때 함수를 클릭해서 접근은 하는 경우가 많더라고요. 이럴 경우에는 패키지 구조를 도식화해서 공유해서 해결하는지, 궁금합니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
인메모리 인가방식 질문드립니다.
안녕하세요 강사님,실전강의 관련하여 추가질문드립니다.아래 MapBasedUrlRoleMapper쪽에서ROLE_ 으로 시작되는 권한은 PersistentUrlRoleMapper를 통해 DB에서 불러오고 나머지는 MapBasedUrlRoleMapper를 사용해서 명시를 할 수 있을까요? public class MapBasedUrlRoleMapper implements UrlRoleMapper{ private final LinkedHashMap<String, String> urlRoleMappings = new LinkedHashMap<>(); @Override public Map<String, String> getUrlRoleMappings() { urlRoleMappings.put("/", "permitAll"); urlRoleMappings.put("/css/**", "permitAll"); urlRoleMappings.put("/js/**", "permitAll"); urlRoleMappings.put("/images/**", "permitAll"); urlRoleMappings.put("/favicon.*", "permitAll"); urlRoleMappings.put("/*/icon-*", "permitAll"); urlRoleMappings.put("/signup", "permitAll"); urlRoleMappings.put("/login", "permitAll"); urlRoleMappings.put("/logout", "permitAll"); urlRoleMappings.put("/denied", "authenticated"); urlRoleMappings.put("/", "ROLE_USER"); urlRoleMappings.put("/user", "ROLE_USER"); urlRoleMappings.put("/admin/**", "ROLE_ADMIN"); urlRoleMappings.put("/manager", "ROLE_MANAGER"); urlRoleMappings.put("/db", "hasRole('DBA')"); return new HashMap<>(urlRoleMappings); } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
application.yml, properties 설정 문서
application.yml이나 properties에 적는 설정 정보? 들을어디서 찾아볼 수 있을까요...공식 문서를 찾아보는데 확인이 잘 안 됩니다.logging.level.org.hibernate.SQL = debug 특히 이 부분같은 경우 어디있는지 모르겠어요
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
섹션15 인가 DB 연동부분
안녕하세요 강사님,강의를 수강중인 수강생입니다.궁금한 사항이 있어 질문드립니다.PersistentUrlRoleMapper의 getUrlRoleMapping를 확인해보면 결국 urlRoleMappings 변수의 key value부분이SecurityFilterChain의 requestMatchers("/admin/**").hasAuthority("ROLE_ADMIN")이 되는것 같습니다.예를들어 컨트롤러 쪽 api 호출시/admin/select 는 ROLE_MANAGER, ROLE_ADMIN 접근 가능하며/admin/insert ROLE_ADMIN만 호출을 허락하려고하면 JPA나 쿼리를 수정해서 urlRoleMappings 에 매핑하면 될지 궁금하여 질문드립니다.현재 업무중의 테이블이 Role 과 Menu가 있고,Role과 Function이라는 테이블이 있어서,Menu접근에 권한과 Menu하위에 기능별로 다르게 권한을 동적으로 주려고하다보니 해당부분을 수정하면 될것 같아서 질문을 드립니다. public class PersistentUrlRoleMapper implements UrlRoleMapper{ public PersistentUrlRoleMapper(ResourcesRepository resourcesRepository) { this.resourcesRepository = resourcesRepository; } @Override public Map<String, String> getUrlRoleMappings() { urlRoleMappings.clear(); List<Resources> resourcesList = resourcesRepository.findAllResources(); resourcesList.forEach(re -> { re.getRoleSet().forEach(role -> { urlRoleMappings.put(re.getResourceName(), role.getRoleName()); }); }); return urlRoleMappings; } }
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
단순 용어 질문드립니다.
DBConnectionUtil을 통해 커넥션을 획득하는 과정에서의 용어 질문입니다. 커넥션을 획득한다커넥션을 연결한다 이 둘의 의미가 여기서는 획득한다(얻다)가 더 알맞는 표현인건가요?
-
미해결스프링 핵심 원리 - 기본편
테스트 로그
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.테스트를 실패하면 로그가 나오는데 성공하면 영상처럼 로그가 안나오는데 따로 설정이 필요한가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
리다이렉트 가 안되고 서버 오류라고 하는데 뭐가 문제 일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 오류 내용은 이러한데2024-06-10T18:33:11.875+09:00 ERROR 12636 --- [nio-8081-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either.] with root causejava.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either.느낌은 파라미터 오류 같은데일단은 강의 내용대로 했는데.. 500오류 라고 뜨네여뭐가 문제인지... 잘 선배님들 도와 주세여혹시 모르니 구글 드라이브에도 남겼습니다.https://drive.google.com/file/d/1_u0G8TeUUVAxLRege6WdbTzNBOuvlZvJ/view?usp=sharing
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 여부에 따라 다른 UI는 어떻게 개발해야 하나요?
안녕하세요 로그인 과정 학습하다가 궁금한 점이 생겨 질문을 올려봅니다.보통의 웹사이트는 로그인 여부에 따라 화면 또는 로직이 다릅니다.예를 들어, 어떠한 게시판에 접속했을 때, 로그인이 된 경우: 닉네임 칸에 자동으로 회원의 닉네임이 입력되어있음로그인이 안된 경우: 닉네임 칸이 빈칸임의 경우에 html에서 조건문으로 처리를 하나요?아니면 각각의 경우에 따라 파일을 만들어서 처리하나요? (ex.boardloggedin.html, boardnotloggedin.html)
-
해결됨스프링 핵심 원리 - 기본편
섹션 5
@Test @DisplayName("싱글톤의 주의할 점") void statefulServiceSingleton() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); StatefulService statefulService1 = ac.getBean("testConfig", StatefulService.class); StatefulService statefulService2 = ac.getBean("testConfig", StatefulService.class); statefulService1.order("userA", 10000); statefulService2.order("userB", 20000); assertThat(statefulService2.getPrice()).isSameAs(20000); } 오류 메시지 java.lang.AssertionError: Expecting actual: 20000 and: 20000 to refer to the same object이렇게 테스트 했더니 오류가 뜹니다!ㅠㅠㅠAssertions.assertThat().isSameAs()Assertions.assertThat().isEqualsTo()두 개의 차이점이 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
jdk 오류 질문드립니다
섹션3 - 스프링으로 전환하기 부분 9:47[질문 내용]세팅에서 Gradle(Default)랑 Intellij IDEA 둘 다 변경해봤는데도 오류뜹니다도와주세요 ㅎ그흑
-
미해결스프링 핵심 원리 - 고급편
로그추적기V1 테스트에서 오류납니다.
구글 클라우드를 사용할 수 있는 환경이 안되서 제 블로그 링크를 붙입니다.https://blog.naver.com/jfk6725/223474471383오류 내용입니다.Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/CodingStudy/%EC%8A%A4%ED%94%84%EB%A7%81/advanced/advanced/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.BUILD FAILED in 3s4 actionable tasks: 2 executed, 2 up-to-date
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
advancedTimeBy와 thenAwait 사용 예시가 궁금합니다
안녕하세요, advancedTimeBy와 thenAwait 사용 예시를 모르겠어서 문의드립니다.강의 중 advancedTimeBy는 '특정 시간을 당겨서 앞서 나가는 것'이라 설명해주셨고, thenAwait은 해당 시간이 빠르게 다가오는 걸로 이해하면 된다고 설명해주셨습니다. 궁금한 점은1) 각각의 테스트가 필요한 예시를 조금만 더 자세히 들어주실 수 있으실까요? 특정 프로젝트에서 어떤 상황일 때 해당 방법이 필요한지 감이 잡히지 않습니다.1-2) 어떤 상황에 필요한 것인지 모르다보니, advancedTimeBy와 thenAwait의 쓰임이 분명히 구분돼 있을텐데도 유사한 방식이 아닌가? 라는 생각이 듭니다. 이 부분도 예시로 설명해주실 수 있다면 함께 설명해주시면 감사하겠습니다.