묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
메시지 파일 관리를 백엔드에서 하나요?
[질문 내용]메시지를 관리하는 거를 백엔드 단에서 파일 하나 만들어서 관리하는 거 같은데 이걸 백엔드랑 프론트로 나눠서 개발을 하는 경우에도 메시지 관리를 백엔드단에서 하게 되나요? 뭔가 프론트에서 할 거 같아서 질문드립니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링 3.2 버전 이상에서 Run tests using 부분은 intelliJ IDEA 를 사용해도 되는지 궁금합니다.
제가 강의를 오랜만에 들어서 혹시 수정사항이 있을까 PDF를 다시 다운받아서 확인했는데,주의! 스프링 부트 3.2 부터 Gradle 옵션을 선택하자.스프링 부트 3.2 부터 앞서 Build and run using에 앞서 설명한 IntelliJ IDEA를 선택하면 몇가지 오류가 발생한다.따라서 스프링 부트 3.2를 사용한다면 다음과 같이 IntelliJ IDEA가 아니라 Gradle을 선택해야 한다.라고 PDF가 12월4일 경에 수정되었더라구요. Run tests using 부분은 intelliJ IDEA 를 사용해도 되는지 궁금합니다.제가 굳이 Run tests using 을 바꾸고 싶은 이유는, test 실행시에,@DisplayName 어노테이션, 메서드로 구분해둔 개별 테스트들의 테스트 결과가 나누어지지 않고 한번에 보여서 그럽니다.구글링 결과 해결법이 Run tests using 부분을 intelliJ IDEA 로 바꾸라는 것 뿐인데 바꾸면 어떤 치명적인 오류가 있는건가요? Run tests using 을 Gradle로 설정했을 때 테스트 실행 결과 화면Run tests using 을 intelliJ IDEA로 설정했을 때 테스트 실행 결과 화면
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@OneToMany 를 쓰는 이유??
생각해보니 양방향 연관관계를 써야 하는 근본적인 이유가 무엇이었나요? 예를 들면 member 와 team 이 다대일 이라면 ,team 에 @OneToMany 가 있을 텐데지금까지 강의에서 보았을떄는 그냥 주 Entity에서 @OneToMany 써서 연관관계 편의 메서드 만들어서 데이터 넣는 느낌? 이 다인 것같은데 근본적인 이유가 뭘까요. 이전 JPA 강의에서는 @OneToMany를 쓸때는 조회하는 것만 사용하라고 했었던 기억이 나는데 강의에서는 @OneToMany를 사용해서 조회해서 APi로 반환한다거나 그런 내용이 없었던 걸로 기억해요 . . .
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭션 동작 원리 정리
트랜잭션의 동작 원리에 대해서 정리해봤습니다.제대로 이해했는지 확인 부탁드립니다! 혹시 잘못 이해하고 있는 부분이 있다면 말씀 부탁드립니다. 서비스 클래스의 메소드에 @Transactional 이 있으면 스프링은 해당 비즈니스 로직을 상속한 AOP 프록시 객체를 생성한 후, 이를 스프링 빈에 등록한다.클라이언트가 해당 프록시를 호출한다. (비즈니스 로직 자체를 호출하지 않는다)스프링은 스프링 컨테이너에 등록된 트랜잭션 매니저를 획득한다.트랜잭션 매니저의 transactionManager.getTransaction()을 호출하여 트랜잭션을 시작한다.트랜잭션 매니저는 스프링 컨테이너에 등록된 데이터 소스를 이용하여 커넥션을 생성한다.커넥션의 con.setAutoCommit(false) 호출로 수동 커밋 모드로 변환한다.생성하고 설정을 끝낸 커넥션을 트랜잭션 동기화 매니저에 보관한다.실제 서비스를 호출하면, 서비스의 비즈니스 로직과 리포지토리의 데이터 접근 로직이 수행된다.리포지토리의 데이터 접근 로직은 트랜잭션 동기화 매니저에 보관된 커넥션을 획득한 후 DB에 접근하여 SQL을 수행한다.비즈니스 로직이 끝나면서 AOP 프록시에서 커밋 또는 롤백을 통해 트랜잭션을 종료한다.트랜잭션을 종료함으로써 커넥션은 커넥션 풀에 반납된다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
프록시 객체 생성은 @Transactional 메소드 단위인가요?
프록시에 대해서 잘 모르는 상태로 질문드립니다.앞으로 다른 강의에서 나올 수 있는 내용이지만, 일단 큰 그림을 잡을 수 있게 간단하게 질문드립니다. 이번 강의에서 메소드에 @Transactional을 붙이면 프록시 객체가 만들어진다고 배웠습니다.그렇다면 @Transactional가 붙어있는 메소드 단위로 프록시 객체가 만들어지는 건지, 아니면 Service 클래스 단위로 프록시 객체가 만들어지는 건지 궁금합니다.예를 들어, Service 클래스에 3개의 메소드가 있다고 가정했을 때, @Transactional 메소드가 2개, 일반 메소드가 1개 있다면, 프록시 객체는 2개가 만들어지는 건가요? 아니면 한 개의 프록시 객체에 두 개의 메소드가 등록되는 건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
로그가 안떠요
킹영한님 로그입니다..저의 로그입니다.위의 select부분이 안떠요...
-
해결됨스프링 시큐리티 OAuth2
openid scope가 헷갈려요 ㅠㅠ
안녕하세요 강사님. openid scope가 계속 헷갈려서서요...scope: openid 클라이언트에서 id token 검증하여 사용자 인증함scope: openid profile email address phone클라이언트에서 access token을 인가 서버에 전송하여 인가 서버에서 토큰을 검증하여 사용자 인증함scope: openeid 미포함클라이언트에서 access token을 리소스 서버에 전송하여 리소스 서버에서 토큰을 검증하여 사용자 인증함openid scope는 리소스 서버를 거치지 않고 사용자 인증을위해 사용한다고 생각되는데, 제가 제대로 이해한게 맞는지 궁금합니다!
-
미해결실전! 스프링 데이터 JPA
매핑 테이블 값 변경
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. EntityAId와 EntityBId를 받아서 EntityAEntityB 매핑테이블의 a라는 변수의 값을 변경시키려면 어떻게 해야 할까요? EntityA와 EntityB를 각각 조회하고 EntityA의 EntityAEntityBList를 돌면서 EntityB인걸 찾으면 DB에 쿼리가 너무 많이 날아갈거같은데 이런 문제는 어떻게 해결 해야 하나 의문이 들어 질문 드립니다.
-
미해결스프링 핵심 원리 - 기본편
DiscountPolicy 상속
안녕하세요public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); }코드에서 참조변수 discountPolicy 에 FixDiscountPolicy 혹은 RateDiscountPolicy의 객체가 오게 될텐데요참조변수 선언을 DiscountPolicy 로 했는데 discount 메소드를 어떻게 사용할 수 있는것이죠?런타임 시점에 자식 타입으로 뿅 하고 변하는건가요? 바보같은 질문 죄송합니다 ^^,,;;
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
mapper.xml 에서 dtd 를 못찾습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]mapper.xml 제일 윗줄인 DOCTYPE 부분 제일 뒤쪽 dtd 주소에 빨간줄이 그어지면서 cannot find dtd file 또는 해당 dtd 파일을 받는중에 오류가 났다고 나오는데요, 덕분에 <mapper>, <select>등 전부 빨간줄이 그어집니다 ㅠ 모든 dtd 파일을 못가져오나 싶었는데, mybatis-context.xml의 config dtd는 또 잘 가져오구요... 어떤것 때문에 mapper dtd를 못가져오는건지 모르겠습니다
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2에 테이블 생성이 안됩니다.
00:37:51.408 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [jpabook.jpashop.MemberRepositoryTest]: MemberRepositoryTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.00:37:51.499 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration jpabook.jpashop.JpashopApplication for test class jpabook.jpashop.MemberRepositoryTest00:37:51.652 [main] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.1.6)2023-12-07T00:37:51.909+09:00 INFO 12984 --- [ main] jpabook.jpashop.MemberRepositoryTest : Starting MemberRepositoryTest using Java 20.0.2.1 with PID 12984 (started by 장민주 in C:\Users\장민주\Downloads\토이프로젝트\jpashop\jpashop)2023-12-07T00:37:51.910+09:00 INFO 12984 --- [ main] jpabook.jpashop.MemberRepositoryTest : No active profile set, falling back to 1 default profile: "default"2023-12-07T00:37:52.453+09:00 INFO 12984 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2023-12-07T00:37:52.473+09:00 INFO 12984 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 12 ms. Found 0 JPA repository interfaces.2023-12-07T00:37:52.903+09:00 INFO 12984 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2023-12-07T00:37:52.946+09:00 INFO 12984 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.13.Final2023-12-07T00:37:52.947+09:00 INFO 12984 --- [ main] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer2023-12-07T00:37:53.169+09:00 INFO 12984 --- [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2023-12-07T00:37:53.192+09:00 INFO 12984 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2023-12-07T00:37:53.384+09:00 INFO 12984 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:9f0efac1-9002-48e8-bf24-577a044a16d9 user=SA2023-12-07T00:37:53.386+09:00 INFO 12984 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2023-12-07T00:37:54.134+09:00 INFO 12984 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2023-12-07T00:37:54.146+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : drop table if exists member cascade 2023-12-07T00:37:54.148+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : drop sequence if exists member_seq2023-12-07T00:37:54.152+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : create sequence member_seq start with 1 increment by 502023-12-07T00:37:54.156+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : create table member ( id bigint not null, username varchar(255), primary key (id) )2023-12-07T00:37:54.162+09:00 INFO 12984 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2023-12-07T00:37:54.343+09:00 WARN 12984 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2023-12-07T00:37:54.706+09:00 INFO 12984 --- [ main] jpabook.jpashop.MemberRepositoryTest : Started MemberRepositoryTest in 3.058 seconds (process running for 3.74)OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2023-12-07T00:37:55.191+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : select next value for member_seq2023-12-07T00:37:55.294+09:00 DEBUG 12984 --- [ main] org.hibernate.SQL : insert into member (username,id) values (?,?)2023-12-07T00:37:55.295+09:00 TRACE 12984 --- [ main] org.hibernate.orm.jdbc.bind : binding parameter [1] as [VARCHAR] - [memberA]2023-12-07T00:37:55.296+09:00 TRACE 12984 --- [ main] org.hibernate.orm.jdbc.bind : binding parameter [2] as [BIGINT] - [1]2023-12-07T00:37:55.304+09:00 INFO 12984 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2023-12-07T00:37:55.305+09:00 INFO 12984 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2023-12-07T00:37:55.307+09:00 INFO 12984 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.Process finished with exit code 0 이런식으로 뜨면서 테이블 생성이 안되는데 어떻게 해야 될까요? 오류 검색해서 계속 따라해보는데 잘 안됩니다 ㅠㅠ
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Spring Boot 2.7.17 Java 11 버전 빌드 성공 한 build.gradle
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]빌드하다 머리털 빠질뻔해서 공유합니다plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE'}group = 'jpabook'version = '0.0.1-SNAPSHOT'java { sourceCompatibility = '11'}ext["hibernate.version"] = "5.6.5.Final"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 'org.springframework.boot:spring-boot-starter-validation' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-hibernate5', version: '2.16.0' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'}tasks.named('test') { useJUnitPlatform()}//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거clean { delete file('src/main/generated')}
-
미해결스프링 핵심 원리 - 기본편
MyLogger 스코프
[질문 내용]requeste 스코프 예제 만들기 20:17초에 나오는 LogDemoService의 MyLogger에 관한 질문입니다. 해당 스코프가 request니까 각 http요청당 하나씩 생성되고 종료되는 거로 알고 있습니다. 처음 컨트롤러에서 생성된 MyLogger를 사용하고 그 다음 서비스에도 MyLogger를 사용하는데 이 때 컨트롤러에서 세팅한 값 MyLogger객체가 그대로 서비스에도 쓰이는 거 같은데 이게 어떻게 가능한거죠?? 컨트롤러와 서비스 코드 간에 같은 MyLogger 객체를 공유하는 어떤 기능이 있는 건가요? 동시에 100개의 http 요청이 들어왔을 때 구분을 어떻게 하는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
의존 관계 주입이 끝나는 시점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]초기화 메서드는 의존 관계 주입이 끝난 후에 실행된다고 이해했습니다. 그런데 의존 관계 주입 단계라는 구간은 정확히 언제까지인가요? 이 코드의 경우엔 setUrl()에서 의존 관계 주입이 일어나지만스프링이 초기화 메서드를 실행하려면 의존 관계 주입이 끝났다는 것을 정확히 파악해야 할 것 같은데 스프링은 다음 중 어떤 식으로 의존 관계 주입이 끝났다는 것을 판단하나요? 1) setUrl()이 호출된 이후, 즉시 의존 관계 주입이 끝났다는 것을 판단할 수 있다.2) networkClient() 메서드 호출이 완전히 끝날 때(return문의 실행이 끝나고 나서)까지가 의존 관계 주입이라고 판단한다.3) 기타.. 혹시 강의 때 말씀하셨었나요? pdf로 복습하는 중인데 이 부분이 궁금하네요..
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
이체중 예외 발생 테스트에서 롤백이 안되는 것 같아요
프로젝트 코드 : https://drive.google.com/file/d/11CCB36D9oTLIXMvT4LUcGoXfyXB9Pk0E/view?usp=sharing MemberSerivceV3_1Test, MemberSerivceV3_2Test 에서 이체중 예외 발생 테스트가 통과가 안됩니다.기대하는 바는 롤백이 적용되어야 하는데, 실제 값은 롤백이 적용되지 않는 8000원이 저장됩니다.PlatformTransactionManager을 적용한 코드에서 문제가 발생하는 것 같습니다.딱히 놓친 부분이나 잘못한 부분을 발견하기 힘들어서 도움을 요청드리고자 질문 올립니다. ㅠㅠ 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
윈도우 shift + f6 을 해도 적용이 안돼요
shift + f6 을 해도 서비스에 적용이 안돼요 구글링해봐도아래와 같은 글 뿐인데 저는 안되네요 ㅠㅠ 뭐가 문제일까요? 맥 아닙니다!! 윈도우에요!
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
내부클래스 접근지정자
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]DTO 클래스를 내부클래스로 만들었는데, 접근지정자를 public으로 지정해주지 않으면 Class 'CreateMemberResponse' is exposed outside its defined visibility scopeClass 'CreateMemberRequest' is exposed outside its defined visibility scope 이런식으로 경고가 발생합니다.강의에서는 public으로 지정하지 않아도 경고창이 뜨지 않았는데 왜그런걸까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Errors 관련 타입캐스팅에 관해 질문드립니다
@Override public void validate(Object target, Errors errors) { Item item = (Item) target; // 검증 로직 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "itemName", "required"); // 간단한 공백이나 값이 안들어왔을때 if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { errors.rejectValue("price", "range", new Object[]{1000,1000000},null); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { errors.rejectValue("quantity", "max", new Object[]{9999},null); } // 특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { errors.reject("totalPriceMin", new Object[]{10000,resultPrice}, null); } } } }강의에서는 errors를 사용하였는데이 부분을 아래와 같이 BindingResult로 타입캐스팅 후 사용하여도 되는걸까요?target의 경우에는 타입캐스팅을 해주었는데 errors도 같은 맥락으로 가능한가 싶어 질문드립니다. 반대로 target을 그대로 가져와 사용하여도 문제 없을까요? @Override public void validate(Object target, Errors errors) { Item item = (Item) target; BindingResult bindingResult = (BindingResult) errors;
-
미해결스프링 핵심 원리 - 기본편
스프링 컨테이너가 아닌 순수한 자바로 테스트
안녕하세요강의 20:33 에서 스프링 컨테이너가 아닌 순수한 자바로 테스트할 수 있는 방법이 없다라고 해주셨는데요 AutoAppConfigTest.java 에서 메소드만 실행 시키면 순수한 자바 테스트이고 클래스 레벨에서 실행시키면 스프링 컨테이너의 도움을 받는건가요?@SpringBootTest 어노테이션이 붙어야 스프링 컨테이너 도움을 받는건가요 ..? 헷갈리네요
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
뷰 <form => PostMapping 컨트롤러 VO(int 형) 받기 문의 드립니다
뷰 <form => PostMapping 컨트롤러 VO(int 형) 받기 문의 드립니다 안녕하세요 강사님프로젝트 도중에 막히는 부분이 있어 질문드립니다보안 지적사항이 나와서 기존 소스 호출 get 방식으로 호출 하는 부분을모두 post 방식으로 변경 하라고 해서작업중입니다뷰 => 컨트롤러 => 서비스 => dao or repository 뷰 화면단에서 <form 에 있는 항목을 컨트롤러로 PostMapping 으로 넘겨 vo 로 받고 싶은데바인딩예외가 발생합니다. vo 클래스에는 현재 int 형으로선언이 되어 있는데 get으로 넘길때는 에러가 없었으나post 로 변경해서 컨트롤러로 넘어가지 않습니다제가 뷰화면단에서 <form 안에 input 타입을 "text" or "number" 형으로 변경 해가면서 테스트 해봐도 마찬가지네요 혹시해결 방법이 있을까요?<<■■■■ 뷰 화면 단 >><form <input type="text" => post 넘기면 에러 발생 <input type="number" => post 넘기면 에러 발생 <<■■■■ 컨트롤러 단 >>@PostMapping('~.do')public getSomeMethod(SomeVoClass param){ //■■메서드파라미터 SomeVoClass 안에 int 형 sn 항목 있습니다<<■■■■ vo 클래스 >>pubiic class SomeVoClass{ private int sn;//■■게시판일련번호 int 형으로 선언됨}<<■■■■ 자바에러메세지 >>org.springframework.validation.BindException:org.springframework.validation.BeanPropertyBindingResult typeMissmatch.SomeVoClass.sntypeMissmatch.sntypeMissMatch.int.typeMismatchdefault message[Failed to convert property value of type 'java.lang.String[]'nested exception is java.lang.NumberFormatException: for input string ",1234"]혹시 시간 나실 때 알려주시면 감사하겠습니다수고하세요.. 김동희 드림