묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코드로 배우는 React with 스프링부트 API서버
섹션 3 부트 프로젝트 생성 및 확인 / 엔티티 클래스 만들기 강의가 재생되지 않습니다.
섹션 3 부트 프로젝트 생성 및 확인 / 엔티티 클래스 만들기 강의가 재생되지 않습니다.크롬으로 보던 중 무한로딩이 떠서 시크릿모드 및 다른 브라우저로 시도해봤지만 여전히 재생되지 않습니다.다른 영상은 잘 재생되는데, 섹션 3 부트 프로젝트 생성 및 확인 / 엔티티 클래스 만들기 강의만 재생되지 않네요. 확인 한 번 부탁드립니다!
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
AuthenticationManager가 부모 AuthenticationManager를 가지는 이유를 모르겠어요
AuthenticationManager가 부모 AuthenticationManager를 가지는 이유를 모르겠습니다. 매니저는 프로바이더를 여러 개 가질 수 있는데, 굳이 부모 매니저를 추가로 가질 수 있도록 해서 부모의 프로바이더를 사용해야할 이유가 있을까요? 그리고 그렇게 사용하는 적절한 예시가 있을까요?
-
미해결스프링 배치
jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)
안녕하세요커서방식에서 Jdbc는 최초 open 메서드 호출 때 db에 쿼리를 날려 ResultSet 첫번 째 row를 가져온 상태에서 read() 를 반복해서 db resultset 커서를 하나씩 이동 시켜 스트리밍 방식으로 가져오는 걸로 알고 있습니다.jpa도 마찬가지로 최초 open 메서드에 쿼리를 날려 작업 결과를 가져오는데 이 때 ResultStream을 반환하고 read에서 실제 db와 상호작용하지 않고 list의 반복자 패턴으로 하나씩 가져온다고 이해했는데요. read때 db와 상호작용을 하지 않는다고 하면 처음 ResultStream에 결과를 다 가져온다는 소리인데 이렇게 되면 메모리 효율이 떨어지지 않나요?
-
미해결서버개발자 과제전형 완벽가이드 - 1편
비즈니스 로직 담당 서비스
비즈니스 로직만을 담당하는 BookApplicationService 를 두는게 새롭고 좋은 구조 아닐까 생각이 들어서 제 생각이 맞는지 궁금해서 여쭙습니다. Query 이름의 서비스는 조회만을Command 는 등록, 수정, 삭제 담당하는 것이고 또한 이런 서비스 구조가 순환참조 발생 가능성도 줄일 수 있겠죠? p.s 강의 잘 듣고 있습니다. 처음 겪어보는 내용들이 많아서 재밌고 배울게 많네요. 강의 빨리 더 내주십시오.
-
해결됨스프링 시큐리티
[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈
@EnableGlobalMethodSecurity 애노테이션이 설정되어있는 곳 모두 찾아서 주석 처리@Order(0) //@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) @EnableWebSecurity @Configuration public class SecurityConfig2 extends WebSecurityConfigurerAdapter {@Order(1) @Configuration //@EnableGlobalMethodSecurity(securedEnabled = true) @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 git bash로 빌드하고 실행할때 뜨는 에러(자바경로 위치관련에러)
ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation. 라고 뜨는데 따로 인텔리제이 설치하며 자바는 따로 설치 안했어요어떻게 하면 좋을까요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
데이터베이스연동문제
해당 오류들이 나오면서 h2베이스에 연동이 되지 않습니다 ㅠㅠ 해결하는 방법이 있을까요?2024-11-01T15:11:48.474+09:00 ERROR 84212 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum2024-11-01T15:11:48.475+09:00 WARN 84212 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum2024-11-01T15:11:48.480+09:00 INFO 84212 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2024-11-01T15:11:48.495+09:00 INFO 84212 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.2024-11-01T15:11:48.506+09:00 INFO 84212 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2024-11-01T15:11:48.548+09:00 INFO 84212 --- [ restartedMain] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2024-11-01T15:11:48.627+09:00 ERROR 84212 --- [ restartedMain] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1775) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1173) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:936) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331) ~[spring-boot-3.2.0.jar:3.2.0] at jpabook.jpshop.JpashopApplication.main(JpashopApplication.java:10) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.2.0.jar:3.2.0]Caused by: org.hibernate.AnnotationException: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum at org.hibernate.boot.model.internal.BasicValueBinder.prepareBasicAttribute(BasicValueBinder.java:805) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.BasicValueBinder.setType(BasicValueBinder.java:374) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.makePropertyAndValue(PropertyBinder.java:261) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:297) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.createBasicBinder(PropertyBinder.java:1169) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.bindBasic(PropertyBinder.java:1071) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.bindProperty(PropertyBinder.java:890) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.buildProperty(PropertyBinder.java:788) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.processElementAnnotations(PropertyBinder.java:709) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.processIdPropertiesIfNotAlready(EntityBinder.java:977) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.handleIdentifier(EntityBinder.java:305) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.bindEntityClass(EntityBinder.java:231) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.AnnotationBinder.bindClass(AnnotationBinder.java:422) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:255) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:278) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:321) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1822) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1771) ~[spring-beans-6.1.1.jar:6.1.1] ... 19 common frames omittedDisconnected from the target VM, address: '127.0.0.1:55744', transport: 'socket'Process finished with exit code 0
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
index.html
안녕하세요? 강의 잘 보고 있습니다.html 코드가 없어 커뮤니티에 와보니 없는게 맞는거군요.강사님과 같은 화면을 만드려면 직접 html 태그 넣어서 만듦강사님이 보내주는 코드를 넣음두가지 방법인거죠?
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
unique 작성법
@Table 애노테이션을 써서 unique 를 설정하셨는데,@Column(unique = true) 로 설정하는 방법을 사용하지 않으신 이유가 있나요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
spring java 23설치했습니다.
제가 java기초강의에서 java23으로 공부했었는데이에따라 spring설치시 java23을 설치했습니다괜찮을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행문이 다르게 나옵니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]8080도 뜨지않고 메인 코드를 실행한후 사이트에 들어가도 에러메세지가 나오지 않습니다. 아래 다르게 나오는 출력문입니다.오후 7:46:36: 실행 중...> Task :helpWelcome to Gradle 8.10.2.To run a build, run gradle <task> ...To see a list of available tasks, run gradle tasksTo see more detail about a task, run gradle help --task <task>To see a list of command-line options, run gradle --helpFor more detail on using Gradle, see https://docs.gradle.org/8.10.2/userguide/command_line_interface.htmlFor troubleshooting, visit https://help.gradle.orgBUILD SUCCESSFUL in 122ms1 actionable task: 1 executed오후 7:46:37: 실행이 완료되었습니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderService에서 MemberRepository를 참조하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 듣다가 문득 궁금하여 질문드립니다.보통 Repository를 바로 접근하지 않기 위해서 Service를 만드는 건데, OrderService에서 MemberRepository에 바로 접근한 것은 OrderService 또한 같은 Service 단계이기 때문인가요?
-
미해결코드로 배우는 React with 스프링부트 API서버
카카오연동이후 product 사진 깨지는현상
왜그런지 궁금해서 post맨으로 product read할때header에 accessToken넣고 요청보내봤는데 정상호출이됩니다근데.리액트에서 만든 인터셉터에서 에러 메시지를 받으면 원래요청에 새로운 엑세스 토큰 넣어서해주는 기능이있는걸 봤어요 어> 근데 이러면 사진이 안깨져야 말이맞지않나요?어디서 잘못된건지 잘 모르겠어서 질문드립니다
-
해결됨스프링 시큐리티 OAuth2
SPA의 로그인 페이지 사용하면서 자체 인가 서버 구성하는 법
SPA로그인 페이지 사용 아직 시도중이지만 시큐리티필터체인의 http. .... .login() .loginProcessingUrl()로 해결 볼 수 있을 거 같아서 자세한 질문은 삭제하겠습니다..!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
디버깅모드 에러
ErrorDecoder를 이용한 예외 처리강의 15:00 에order_service: url: http://ORDER-SERVICE/order-service/%s/orders exception: order_is_emptyda: User's order is emptyimda2이렇게 설정하고 http://127.0.0.1:8000/user-service/users/[userid]돌리니까디버깅모드에서 getProperty가 Invalid expression : ) 로 표시됩니다 resume 하면 제대로 postman에 적용되긴합니다. 거의 똑같이 썻는데 왜 저는 저렇게 디버그 모드에서 invalid expression이라고 떠서 확인을 못하게 뜰까요 스프링부트3.3 jdk 17입니다 intellij
-
미해결스프링 시큐리티 OAuth2
claims 공개/비공개 개념 질문
{ "sub" : "1234567890", "iss" : "onjsdnjs.com" // 등록된 클레임 "exp" : 192630000 "https://onjsdnjs.com/claims/job" : "developer" //공개 클레임 "userId" : "leaven" // 비공개 클레임 "username" : "onjsdnjs" }공개와 비공개 개념이 있습니다.어디에 혹은 어느 대상에 공개를 한다는 것인지 설명이 없어 문의 드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 DB를 MySql로 마이그레이션
[질문 내용]H2의 Table과 Data를 MySql로 변환해서 쓰고 싶으면 어떻게 해야 할까요?
-
해결됨스프링 시큐리티
AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우
@Order(0) @Configuration @EnableWebSecurity public class SecurityConfig2 extends WebSecurityConfigurerAdapter { @Autowired private SecurityResourceService securityResourceService; @Autowired private FormAuthenticationDetailsSource authenticationDetailsSource; @Autowired private AuthenticationSuccessHandler customAuthenticationSuccessHandler; @Autowired private AuthenticationFailureHandler customAuthenticationFailureHandler; private String[] permitAllPattern = {"/", "/login", "/user/login/**"}; @Bean public PermitAllFilter customFilterSecurityInterceptor() throws Exception { PermitAllFilter permitAllFilter = new PermitAllFilter(permitAllPattern); permitAllFilter.setSecurityMetadataSource(urlFilterInvocationSecurityMetadataSource()); permitAllFilter.setAccessDecisionManager(affirmativeBased()); permitAllFilter.setAuthenticationManager(authenticationManagerBean()); return permitAllFilter; } private AccessDecisionManager affirmativeBased() { AffirmativeBased affirmativeBased = new AffirmativeBased(getAccessDecisionVoters()); return affirmativeBased; } private List<AccessDecisionVoter<?>> getAccessDecisionVoters() { List<AccessDecisionVoter<? extends Object>> accessDecisionVoters = new ArrayList<>(); accessDecisionVoters.add(new IpAddressVoter(securityResourceService)); accessDecisionVoters.add(roleVoter()); return accessDecisionVoters; } @Bean public RoleHierarchyVoter roleVoter() { RoleHierarchyVoter roleHierarchyVoter = new RoleHierarchyVoter(roleHierarchy()); return roleHierarchyVoter; } @Bean public RoleHierarchyImpl roleHierarchy() { RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl(); return roleHierarchy; } @Bean public FilterInvocationSecurityMetadataSource urlFilterInvocationSecurityMetadataSource() throws Exception { return new UrlFilterInvocationSecurityMetadataSource(urlResourcesMapFactoryBean().getObject(), securityResourceService); } private UrlResourcesMapFactoryBean urlResourcesMapFactoryBean() { UrlResourcesMapFactoryBean urlResourcesMapFactoryBean = new UrlResourcesMapFactoryBean(); urlResourcesMapFactoryBean.setSecurityResourceService(securityResourceService); return urlResourcesMapFactoryBean; } @Bean public AuthenticationProvider authenticationProvider() { return new FormAuthenticationProvider(passwordEncoder()); } @Bean public AccessDeniedHandler accessDeniedHandler() { CustomAccessDeniedHandler accessDeniedHandler = new CustomAccessDeniedHandler(); accessDeniedHandler.setErrorPage("/denied"); return accessDeniedHandler; } @Bean public AuthenticationSuccessHandler ajaxAuthenticationSuccessHandler() { return new AjaxAuthenticationSuccessHandler(); } @Bean public AuthenticationFailureHandler ajaxAuthenticationFailureHandler() { return new AjaxAuthenticationFailureHandler(); } @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); } @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Override protected void configure(AuthenticationManagerBuilder auth) { auth.authenticationProvider(authenticationProvider()); } @Override public void configure(WebSecurity web) { web.ignoring() .requestMatchers(PathRequest.toStaticResources() .atCommonLocations()); } @Override protected void configure(final HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/").permitAll() .antMatchers("/mypage").hasRole("USER") .antMatchers("/messages").hasRole("MANAGER") .antMatchers("/config").hasRole("ADMIN") .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .loginProcessingUrl("/login_proc") .authenticationDetailsSource(authenticationDetailsSource) .successHandler(customAuthenticationSuccessHandler) .failureHandler(customAuthenticationFailureHandler) .permitAll() ; http.exceptionHandling() .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login")) .accessDeniedPage("/denied") .accessDeniedHandler(accessDeniedHandler()) .and() .addFilterBefore(customFilterSecurityInterceptor(), FilterSecurityInterceptor.class) ; http.csrf() .disable(); customConfigurer(http); } private void customConfigurer(HttpSecurity http) throws Exception { http.apply(new AjaxLoginConfigurer<>()) .successHandlerAjax(ajaxAuthenticationSuccessHandler()) .failureHandlerAjax(ajaxAuthenticationFailureHandler()) .setAuthenticationManager(authenticationManagerBean()) .loginProcessingUrl("/api/login"); } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 조언을 얻고 싶습니다.
[질문 내용]spring mvc 1편까지 수강했을 땐 이해가 가능했는데, 야생형으로 한번 도전해보고 있습니다. 그런데 외계어로 들리는데 일단 한번 쭉 따라 쳐보는게 맞는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의를 보고 연습 코드를 짜봤는데용... 잘 짠지 모르겠습니다.
우선 책과 카테고리 관계는 다대다 매핑이니 중간테이블로 책카테고리라는 엔티티를 뒀습니다.Ex) 연관관계 예시[책] : "해리포터" <-> [카테고리] : sf, 소설[책] : "아이언맨", "해리포터" <-> [카테고리] : sfpublic class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "book_id") private Long id; private String title; }public class BookCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "book_category_id") private Long id; @ManyToOne @JoinColumn(name = "book_id") private Book book; @ManyToOne @JoinColumn(name = "category_id") private Category category;public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "category_id") private Long id; private String categoryName; @OneToMany(mappedBy = "category", cascade = CascadeType.ALL, orphanRemoval = true) private List<BookCategory> bookCategories = new ArrayList<>(); }@Transactional public void createBook(BookDto dto) { Book book = new Book(); book.setTitle(dto.getTitle()); bookRepository.save(book); List<Category> categories = dto.getCategories(); for (Category category : categories) { BookCategory bookCategory = new BookCategory(); bookCategory.setBook(book); bookCategory.setCategory(category); category.getBookCategories().add(bookCategory); categoryRepository.save(category); } }테스트 해 본 결과, 원하는 대로 나오는 거 같은데CategoryRepository에는id name1 소설2 Sf3 소설이런 식으로 저장되더라구요... 이러면 CategoryRepository에 의미없는 데이터만 저장되는 거 같은데 잘 짠 거 맞나요?