묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
static class
static class 설정파일왜 대부분의 테스트시 static class 를 이용해서 스프링설정을 하시나요? default class 를 이용해서 스프링 설정을 하는건 어떤지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링 컨테이너를 테스트에 통합한 경우
강의자료에 아래의 문장이 있습니다. 순수한 자바 테스트 코드에는 당연히 @Autowired가 동작하지 않는다. @SpringBootTest 처럼 스프링 컨테이너를 테스트에 통합한 경우에만 가능하다. 이 말의 의미가 아래 2가지 경우 모두 해당되는게 맞을까요?1) @SpringBootTest 이 있는 클래스 내부에서 @Autowired 를 사용해서 의존관계주입하는 경우 2) Class 내부에 @Autowired 를 사용해서 의존관계를 표시하고 new AnnotationConfigApplicationContext(test.class) 으로 스프링 컨테이너를 생성한 경우
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost8080이 실행이안됩니다...
실행 버튼도 누르고 21버전으로 모두 맞췄는데도 자꾸 안되네요
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Spring EL 표현식 ${} 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]일반적으로 ${}를 쓸 때는 중괄호 내에 지정된 필드에 "실제 값"을 호출하는 것으로 알고 있습니다 예를 들어 <span th:text="${item.itemName}"></span>의 경우 Item객체에 프로퍼티 접근을 통하여 itemName 필드에 들어있는 "실제 값"에 접근을 합니다즉 itemName의 실제 값인 "itemA"를 반환하게 되는 것이지요 하지만<form th:object="${item}"><label for="itemName"></label><input type="text" th:field ="${item.itemName}"></form>와 같이 th:object=${item}으로 폼에서 item 객체를 지정해서 th:field=*{itemName} 하게 되면 이때는 "실제 값"을 꺼내는 게 아닌 itemName이라는 "변수 이름"을 꺼내서 id , name , value값으로 지정하게 됩니다 [핵심 질문]이에 따라 일반적인 상황에선 Spring EL 문법인 ${}의 용도가 "실제 값"을 꺼내는 거지만 th:field같은 예외적인 상황에서만 "변수 이름"에 접근하는 것이라고 이해해도 될까요?
-
미해결3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
신규강의 무료 쿠폰 신청합니다!
안녕하세요. 개발자PARK님 spring+전자정부프레임워크 수강생이빈다.EA + egovframe 신규 강의 무료쿠폰 주신다 하여 메일 보냈습니다.감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 데이터베이스 설치
H2 데이터베이스 설치 후 sql파일을 만드는 과정에서 아래 사진 처럼 sql파일은 Intellij IDEA ultimate 에서만 지원가능하다고 하는데 Intellij IDEA ultimate을 새로 또 설치해야 되는건가요?그 다음 강의에서 application properties에 코드를 입력 할때도 Intellij IDEA ultimate에서만 지원가능하다고 합니다..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Spring Oracle 연동 질문입니다.
현재 사내에 연결된 다른 db 서버들은 모두 connection이 잘되는데,oracle db 서버만 연결이 이상한 상황입니다.위와같이 연결테스트도 성공을 하는데..위와같은 오류가 발생하며 위와같이 다른 db와 달리 선택된 스키마가 없는상황입니다.. Toad에서 위 oracle db연결했을 때 완전히 같은 정보를 입력했을 때, 정상적으로 작동합니다..도대체 뭐가 문제일까요 ㅠㅠ서버 ip, port도 정상적인 상황입니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
어떻게 MemberForm 클래스가 선택이 되는지 과정이 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의 잘 듣고 있습니다. 재밌게 강의를 듣던 중 궁금증이 생겨 이렇게 질문 드리게 되었습니다. 7분40초~7분50초 쯤 설명에 의하면 "우리가 웹에서 입력한 name값이 MemberForm의 name 필드로 전달이 된다"라는 식으로 말씀을 하셨는데, 어떻게 Member 클래스가 아닌 MemberForm 클래스의 name을 찾아가게 되는 건가요?? 제가 워낙에 초보라서 그런지, 코드 상에서 "Member의 name이 아닌 MemberForm의 name을 찾아가도록 하는" 코드도 발견을 못하겠습니다.. 또한 다른 분들의 말씀에 의해서 질문을 드리고 싶은데, MemberForm 클래스에서 setName() 메서드가 사용이 안되는 것 같은데, 7분55초~ 8분 쯤의 설명으로는 setName() 메서드를 사용하시는 것처럼 말씀하시더라구요. 이 역시도 제가 잘 몰라서 그러는데 실제로 setName() 메서드가 사용되는 건가요?? 자세한 설명 부탁드리겠습니다.감사합니다:-)
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
강의자료 관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 잘 듣고 있습니다. pdf 강의자료 6.스프링과 문제 해결 pg.11의 MemberServiceV4Test 코드에서 @AfterEach의 after 메소드에 붙은 throws SQLException를 제거해도 될 것 같아서 글을 남깁니다. 좋은 하루 되세요.
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
Controller의 BoardMapper 쪽에서 문제가 있습니다.
Controller에서 @Autowired로 private BoardMapper boardMapper를 해주었는데 필드 주입이 되지 않습니다.root-context에서 <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close"> <constructor-arg ref="mysqlHikariConfig" /> </bean> <mybatis-spring:scan base-package="com.spring.board.mapper" /> <bean class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> </bean>mybatis-spring:scan 으로 패키지에 제대로 설정해주었는데 "/boardList.do"로 이동하면 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.spring.board.mapper.BoardMapper.getLists이러한 에러가 콘솔창에 나타납니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
천천히 친절하고 인텔리제이 친화적인 강의에 감사합니다
[질문 내용]너무 친절하고 무료 강의 감사합니다.너무 좋은 강의라 고민입니다. ㅎㅎ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Data 를 사용했을때 차이점
https://www.inflearn.com/questions/1087841/spring-3-2-0-%EC%82%AC%EC%9A%A9%ED%95%98%EC%8B%9C%EB%8A%94-%EB%B6%84%EB%93%A4-%EC%A4%91-converteredit%EC%97%90%EC%84%9C-%EC%BB%A8%EB%B2%84%ED%8C%85-%EC%95%88%EB%90%98%EC%8B%9C%EB%8A%94-%EB%B6%84 위 링크에 있는 질문처럼 @Data를 사용하면 오류가 뜨고 따로 @Setter @Getter @RequiredArgsConstructor를 사용했을때 정상작동되는 이유가 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션1 <빌드하고 실행하기>
강의자님께서 mac은 ./gradlew build이고 window의 경우에는 ./gradlew.bat을 build 하면 된다고 하셨는데 ./gradlew.bat 명령어만 치면되는 건가요? (window 사용, bash 터미널 사용 중입니다.!)
-
해결됨실전! 스프링 데이터 JPA
페치조인과 new 프로젝션
Member Entity@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Builder @AllArgsConstructor @ToString(of = {"id", "username", "age"}) @NamedQuery( name = "Member.findByAgeGreaterThanAndUsername", query = "select m from Member m where m.age > :age and m.username = :username" ) public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; private String username; private int age; /** * 연관관계 편의 메서드 */ public void changeTeam(Team team) { this.team = team; team.getMembers().add(this); } } Team Entity@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Builder @AllArgsConstructor @ToString(of = {"id", "name"}) public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "team_id") private Long id; @OneToMany(mappedBy = "team", fetch = FetchType.LAZY) @Builder.Default private List<Member> members = new ArrayList<>(); private String name; } MemberRepositorypublic interface MemberSpringJpaRepository extends JpaRepository<Member, Long> { List<Member> findByUsernameAndAgeGreaterThan(String username, int age); @Query(name = "Member.findByAgeGreaterThanAndUsername") List<Member> findByAgeGreaterThanAndUsername(@Param("age") int age, @Param("username") String username); @Query(value = "select m from Member m") List<Member> findUsers(); @Query(value = "select new study.datajpa.dto.MemberDto(m.id, m.username, t.name) from Member m join m.team t") List<MemberDto> findMemberDtoWithJoin(); /** * fetch join -> new 프로젝션 예외 터짐 */ // @Query(value = "select new study.datajpa.dto.MemberDto(m.id, m.username, t.name) from Member m join fetch m.team t") // List<MemberDto> findMemberDtoWithFetchJoin(); @Query(value = "select m from Member m join m.team t") List<Member> findMemberJoinWithTeam(); } 질문 /** * join -> new 프로젝션 정상 수행 */ @Query(value = "select new study.datajpa.dto.MemberDto(m.id, m.username, t.name) from Member m join m.team t") List<MemberDto> findMemberDtoWithJoin(); /** * fetch join -> new 프로젝션 예외 터짐 */ // @Query(value = "select new study.datajpa.dto.MemberDto(m.id, m.username, t.name) from Member m join fetch m.team t") // List<MemberDto> findMemberDtoWithFetchJoin();@Query 애너테이션에서 쿼리문을 작성할 때, new 연산자를 사용하여 dto로 변환하여 반환하려고 합니다. Member-Team을 join 후 new 연산자를 사용하여 dto는 정상적으로 반환이 됩니다. 근데 페치조인을 사용 후 new 연산자를 사용하면 아래 예외가 터집니다.fetch join으로는 new 연산자 사용이 안 되는 이유를 알고싶습니다. 발생하는 예외java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@3d1b6816 testClass = study.datajpa.repository.springjpa.MemberSpringJpaRepositoryTest, locations = [], classes = [study.datajpa.DataJpaApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@1255b1d1, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@47da3952, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@28a0fd6c, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@5fb97279, org.springframework.boot.test.context.SpringBootTestAnnotation@3f26d230], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 웹 기능 조회
회원 웹 기능 조회에서 잘 따라가다가 아래 처럼 model에서 오류가 뜹니다.. 뭐가 잘못되었을 까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost8080 연결 거부
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]view 환경설정에 코드 resources/static/index.html 코드 복사해서 치고 실행돌린 후 localhost:8080 돌렸는데도 자꾸 연결 거부만 뜹니다..그리고 왜 코드도 저렇게 흰색으로 뜨는 지 잘 모르겟어요..뭐가 문제인가요 ㅠㅠ
-
미해결스프링 시큐리티 OAuth2
oidcLogoutHandler 작성할 때의 질문입니다!
안녕하세요.oidcLogoutHandler()는 말 그대로 scope에 openid가 포함되어 open id 방식으로 인증했을 때의 로그아웃 처리인데요.oauth2.0으로 로그인했을 때의 로그아웃 처리는 어떻게 하는지 궁금합니다. Oauth2ClientInitiatedLogoutSuccessHandler 같은 클래스는 없더라고요!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션1 <View 환경설정> 강의 질문
templates 폴더의 hello.html 파일에서 <p>태그로 묶여있는 "안녕하세요. 손님"은 화면에서 확인할 수가 없는 이유가 궁금합니다. Thymeleaf templates 엔진 처리를 통해 웹 브라우저에 무언가를 띄우려면 항상 th:text="'안녕하세요. ' + ${data}" 이런 식의 문법을 사용해야 하나요?
-
미해결스프링 핵심 원리 - 기본편
AppConfig import 되지 않는 이유가 궁금합니다..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]AppConfig가 import되지 않는 이유가 궁금합니다.
-
미해결
JPA에 준영속 상태인 엔티티를 매핑해서 저장해도 잘 작동하는 이유
안녕하세요. JPA를 사용하다 질문이 생겼습니다.다음과 같은 예시를 들어보겠습니다. @Entity @Setter @Getter public class A { @Id @GeneratedValue private Long id; @OnetoOne @JoinColumn(생략) private B b; } @Entity @Setter @Getter public class B { @Id @GeneratedValue private Long id; }위와 같이 엔티티가 존재한다고 해보겠습니다.새로 DB에 A 객체를 저장하고자 합니다.이 때, A a = new A(); 와 a.setB(b); 를 통해 b 객체를 매핑했다고 가정하겠습니다.그런데, 이 때 매핑한 b 객체가 준영속 상태더라도 매핑이 잘 되어서 a객체가 db에 저장되는것을 확인했습니다 (b 객체는 이미 DB에 존재합니다. )이게 원래 잘 되는게 맞는지 조금 헷갈리는데, 준영속 상태더라도 b의 PK를 가져오는 것이기 때문에 문제가 없는것일까요?