이제, 'SecurityFilterChain'의 각 요청에 대해 별도의 'SecurityContext'에 인스턴스가 존재한다고 합니다. 이를 통해 'Spring Security'는 'SecurityContext'의 생명주기를 'HTTP Request'와 동일하게 관리할 수 있게 되었다고 합니다. 즉, 이전 방식처럼 'SecurityContextPersistenceFilter'와 같이 'SecurityContext'를 세션에 저장하고 불러오는 별도의 필터가 불필요해져서 지금은 Deprecated 되었고, SecurityContext'의 저장 위치를 'SecurityContextRepository' 인터페이스 구현체인 'HttpSessionSecurityContextRepository'가 담당하게 되면서 더욱 유연해졌다고 하는데 맞을까요?
Spring Authorization Server 1.x 와 OAuthClient 를 사용하고 있습니다. 강의 내용과 레퍼런스를 참조하여 Spring Authorization Server 사용하여 SSO 시스템을 개발을 진행하고 있습니다. OAuth2 Client 등록등 관리자 화면 접속을 위하여 로그인 페이가 필요한데 개발중인 SSO 시스템을 OAuth2 Client 로 등록하여 인증처리를 하기 위하여 설정 파일에 provider 로 등록하였습니다. spring: security: oauth2: client: registration: local: authorization-grant-type: authorization_code client-id: 'default' client-secret: '325ee4c4-94e9-435b-a3c4-579f84d1e211' client-name: '인증서버' redirect-uri: SSO서버URL/social-login/oauth2/code/naon-iam scope: - openid - profile provider: local: issuer-uri: SSO서버URL 문제는 Spring Boot 가 기동될떄 oauth2 client 설정이 초기화 되는 과자에서 issuer-uri 에 접속을 하는데 아직 WAS 가 실행이 안된 상태이기 때문에 issuer-uri 로 ODIC Provider 정보를 가져 올떄 Connection refused 예외가 발생합니다. Caused by: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://SSO서버URL/.well-known/openid-configuration": Connection refused: no further information at org.springframework.web.client.RestTemplate.createResourceAccessException(RestTemplate.java:888) ~[spring-web-6.0.9.jar:6.0.9] at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:868) ~[spring-web-6.0.9.jar:6.0.9] at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:714) ~[spring-web-6.0.9.jar:6.0.9] at org.springframework.security.oauth2.client.registration.ClientRegistrations.lambda$oidc$0(ClientRegistrations.java:163) ~[spring-security-oauth2-client-6.1.0.jar:6.1.0] at org.springframework.security.oauth2.client.registration.ClientRegistrations.getBuilder(ClientRegistrations.java:216) ~[spring-security-oauth2-client-6.1.0.jar:6.1.0] ... 178 common frames omitted yaml 의 설정을 제거 하고 Java Config 에서 등록을 하면 @Bean public ClientRegistrationRepository clientRegistrationRepository() { return new InMemoryClientRegistrationRepository(this.localRegistration()); } private ClientRegistration localRegistration() { return ClientRegistration.withRegistrationId("local") .clientId("google-client-id") 순한 참조 예외가 발생합니다. Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'clientRegistrationRepository': Requested bean is currently in creation: Is there an unresolvable circular reference? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:355) ~[spring-beans-6.0.9.jar:6.0.9] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:227) ~[spring-beans-6.0.9.jar:6.0.9] Spring Authorization Sever 와 충돌의 의심해보았는데 RegisteredClientRepository 로 등록하거 있어 원인을 아닌거 같고 ClientRegistrationRepository 을 등록하는 코드에 문제가 있는거 같이 문의 합니다. 개발은 Spring Authorization 1.1 로 진행하고 있습니다. OIDC Logout Endpoint 기능이 필요하여 지난주에 Spring Authorization 1.0.2 -> 1.1 로 업그레이드 하였습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 프로젝트를 같은 이름으로 새로 생성해서 열려고 하는데 이전에 사용하던 프로젝트가 완전히 삭제가 안 된 거 같아요 . 새 프로젝트를 여니까 build 에서 오류가 뜨는데 어떻게 해결해야 할까요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 영한님 강의 중 회원 서비스 테스트까지 일단 습득을 하고 있는 중 @AfterEach 이과정에서 MemoryMemberRepository repository = new MemoryMemberRepository(); 이렇게 하셨지만 원래 인터페이스에서 가져와야한다고 하셔서 MemberRepository repository = new MemoryMemberRepository(); 인터페이스에서 가져와서 사용 하고 있습니다. 돌아가기는 잘 돌아 가는데, 여기서 질문이 노란전구가 뜨면서 alt + enter 했더니 MemoryMemberRepository repository = new MemoryMemberRepository(); 이렇게 바꾸라고 권장? 하는데요. 뭐가 맞는 것일까요??
안녕하세요 강사님 요즘 너무 바빠서 강의를 못듣다가 다시 수강하게되었습니다 다른게아니고 새로운 스프링부트파일 생성할때 Can not initialize cryptographic mechanism 이런오류가 나버리는데 java.lang.ExceptionInInitializerError (no error message) > Can not initialize cryptographic mechanism * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Exception is: java.lang.ExceptionInInitializerError at org.gradle.internal.resource.transport.http.HttpClientConfigurer.jdkSupportsTLSProtocol( HttpClientConfigurer.java:115 ) at org.gradle.internal.resource.transport.http.HttpClientConfigurer.determineHttpsProtocols( HttpClientConfigurer.java:106 ) at org.gradle.internal.resource.transport.http.HttpClientConfigurer.<init>( HttpClientConfigurer.java:134 ) at org.gradle.internal.resource.transport.http.HttpClientHelper.getClient( HttpClientHelper.java:224 ) at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest( HttpClientHelper.java:170 ) at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest( HttpClientHelper.java:146 ) at org.gradle.internal.resource.transport.http.HttpClientHelper.executeGetOrHead( HttpClientHelper.java:135 ) at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest( HttpClientHelper.java:105 ) at org.gradle.internal.resource.transport.http.HttpClientHelper.performRawGet( HttpClientHelper.java:92 ) at org.gradle.internal.resource.transport.http.HttpClientHelper.performGet( HttpClientHelper.java:96 ) at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource( HttpResourceAccessor.java:45 ) at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource( HttpResourceAccessor.java:30 ) at org.gradle.internal.resource.transfer.AbstractExternalResourceAccessor.withContent( AbstractExternalResourceAccessor.java:32 ) at org.gradle.internal.resource.transfer.DefaultExternalResourceConnector.withContent( DefaultExternalResourceConnector.java:59 ) at org.gradle.internal.resource.transfer.ProgressLoggingExternalResourceAccessor$DownloadOperation.call( ProgressLoggingExternalResourceAccessor.java:122 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute( DefaultBuildOperationRunner.java:204 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute( DefaultBuildOperationRunner.java:199 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:66 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:157 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.call ( DefaultBuildOperationRunner.java:53 ) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call ( DefaultBuildOperationExecutor.java:73 ) at org.gradle.internal.resource.transfer.ProgressLoggingExternalResourceAccessor.withContent( ProgressLoggingExternalResourceAccessor.java:45 ) at org.gradle.internal.resource.transfer.AccessorBackedExternalResource.withContentIfPresent( AccessorBackedExternalResource.java:99 ) at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache( DefaultCacheAwareExternalResourceAccessor.java:191 ) at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.lambda$getResource$1( DefaultCacheAwareExternalResourceAccessor.java:89 ) at org.gradle.cache.internal.ProducerGuard$AdaptiveProducerGuard.guardByKey( ProducerGuard.java:97 ) at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.getResource( DefaultCacheAwareExternalResourceAccessor.java:83 ) at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadByCoords( DefaultExternalResourceArtifactResolver.java:149 ) at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadStaticResource( DefaultExternalResourceArtifactResolver.java:94 ) at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.resolveArtifact( DefaultExternalResourceArtifactResolver.java:60 ) at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.parseMetaDataFromArtifact( AbstractRepositoryMetadataSource.java:78 ) at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.create( AbstractRepositoryMetadataSource.java:68 ) at org.gradle.api.internal.artifacts.repositories.metadata.DefaultMavenPomMetadataSource.create( DefaultMavenPomMetadataSource.java:40 ) at org.gradle.api.internal.artifacts.repositories.metadata.RedirectingGradleMetadataModuleMetadataSource.create( RedirectingGradleMetadataModuleMetadataSource.java:51 ) at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.resolveStaticDependency( ExternalResourceResolver.java:242 ) at org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver.doResolveComponentMetaData( MavenResolver.java:115 ) at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver$RemoteRepositoryAccess.resolveComponentMetaData( ExternalResourceResolver.java:457 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$ResolveAndCacheRepositoryAccess.resolveComponentMetaData( CachingModuleComponentRepository.java:382 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.lambda$resolveComponentMetaData$5( ErrorHandlingModuleComponentRepository.java:152 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.lambda$tryResolveAndMaybeBlacklist$15( ErrorHandlingModuleComponentRepository.java:213 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.tryResolveAndMaybeBlacklist( ErrorHandlingModuleComponentRepository.java:227 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.tryResolveAndMaybeBlacklist( ErrorHandlingModuleComponentRepository.java:212 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.performOperationWithRetries( ErrorHandlingModuleComponentRepository.java:205 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.resolveComponentMetaData( ErrorHandlingModuleComponentRepository.java:151 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.process( ComponentMetaDataResolveState.java:69 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.resolve( ComponentMetaDataResolveState.java:61 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch( RepositoryChainComponentMetaDataResolver.java:139 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch( RepositoryChainComponentMetaDataResolver.java:120 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolveModule( RepositoryChainComponentMetaDataResolver.java:94 ) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolve( RepositoryChainComponentMetaDataResolver.java:65 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.ComponentResolversChain$ComponentMetaDataResolverChain.resolve( ComponentResolversChain.java:106 ) at org.gradle.api.internal.artifacts.ivyservice.clientmodule.ClientModuleResolver.resolve( ClientModuleResolver.java:70 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.ComponentState.resolve( ComponentState.java:230 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.ComponentState.getResolveStateOrNull( ComponentState.java:177 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.EdgeState.calculateTargetConfigurations( EdgeState.java:223 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.EdgeState.attachToTargetConfigurations( EdgeState.java:152 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.attachToTargetRevisionsSerially( DependencyGraphBuilder.java:371 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.resolveEdges( DependencyGraphBuilder.java:254 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.traverseGraph( DependencyGraphBuilder.java:191 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.resolve( DependencyGraphBuilder.java:151 ) at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultArtifactDependencyResolver.resolve( DefaultArtifactDependencyResolver.java:144 ) at org.gradle.api.internal.artifacts.ivyservice.DefaultConfigurationResolver.resolveGraph( DefaultConfigurationResolver.java:195 ) at org.gradle.api.internal.artifacts.ivyservice.ShortCircuitEmptyConfigurationResolver.resolveGraph( ShortCircuitEmptyConfigurationResolver.java:85 ) at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.resolveGraph( ErrorHandlingConfigurationResolver.java:76 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$1.call( DefaultConfiguration.java:657 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$1.call( DefaultConfiguration.java:648 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute( DefaultBuildOperationRunner.java:204 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute( DefaultBuildOperationRunner.java:199 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:66 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:157 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.call ( DefaultBuildOperationRunner.java:53 ) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call ( DefaultBuildOperationExecutor.java:73 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveGraphIfRequired( DefaultConfiguration.java:648 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.lambda$resolveExclusively$4( DefaultConfiguration.java:628 ) at org.gradle.api.internal.initialization.RootScriptDomainObjectContext$CalculatedModelValueImpl.update( RootScriptDomainObjectContext.java:143 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveExclusively( DefaultConfiguration.java:625 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater( DefaultConfiguration.java:612 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getResolvedConfiguration( DefaultConfiguration.java:587 ) at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getResolvedConfiguration(Unknown Source) at org.gradle.plugin.use.resolve.internal.ArtifactRepositoriesPluginResolver.exists( ArtifactRepositoriesPluginResolver.java:104 ) at org.gradle.plugin.use.resolve.internal.ArtifactRepositoriesPluginResolver.resolve( ArtifactRepositoriesPluginResolver.java:60 ) at org.gradle.plugin.use.resolve.internal.CompositePluginResolver.resolve( CompositePluginResolver.java:34 ) at org.gradle.plugin.use.resolve.internal.AlreadyOnClasspathPluginResolver.resolve( AlreadyOnClasspathPluginResolver.java:57 ) at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.resolveToFoundResult( DefaultPluginRequestApplicator.java:229 ) at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.lambda$resolvePluginRequests$3( DefaultPluginRequestApplicator.java:168 ) at org.gradle.util.internal.CollectionUtils.collect( CollectionUtils.java:212 ) at org.gradle.util.internal.CollectionUtils.collect( CollectionUtils.java:206 ) at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.resolvePluginRequests( DefaultPluginRequestApplicator.java:166 ) at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugins( DefaultPluginRequestApplicator.java:101 ) at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply( DefaultScriptPluginFactory.java:117 ) at org.gradle.configuration.BuildOperationScriptPlugin$1.run( BuildOperationScriptPlugin.java:65 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute( DefaultBuildOperationRunner.java:29 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute( DefaultBuildOperationRunner.java:26 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:66 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:157 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.run ( DefaultBuildOperationRunner.java:47 ) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run ( DefaultBuildOperationExecutor.java:68 ) at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0( BuildOperationScriptPlugin.java:62 ) at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply( DefaultUserCodeApplicationContext.java:44 ) at org.gradle.configuration.BuildOperationScriptPlugin.apply( BuildOperationScriptPlugin.java:62 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0( DefaultProjectStateRegistry.java:360 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState( DefaultProjectStateRegistry.java:378 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState( DefaultProjectStateRegistry.java:359 ) at org.gradle.configuration.project.BuildScriptProcessor.execute( BuildScriptProcessor.java:42 ) at org.gradle.configuration.project.BuildScriptProcessor.execute( BuildScriptProcessor.java:26 ) at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate( ConfigureActionsProjectEvaluator.java:35 ) at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0( LifecycleProjectEvaluator.java:109 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0( DefaultProjectStateRegistry.java:360 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$fromMutableState$1( DefaultProjectStateRegistry.java:383 ) at org.gradle.internal.work .DefaultWorkerLeaseService.withReplacedLocks( DefaultWorkerLeaseService.java:345 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState( DefaultProjectStateRegistry.java:383 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState( DefaultProjectStateRegistry.java:359 ) at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run( LifecycleProjectEvaluator.java:100 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute( DefaultBuildOperationRunner.java:29 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute( DefaultBuildOperationRunner.java:26 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:66 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:157 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.run ( DefaultBuildOperationRunner.java:47 ) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run ( DefaultBuildOperationExecutor.java:68 ) at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate( LifecycleProjectEvaluator.java:72 ) at org.gradle.api.internal.project.DefaultProject.evaluate( DefaultProject.java:762 ) at org.gradle.api.internal.project.DefaultProject.evaluate( DefaultProject.java:153 ) at org.gradle.api.internal.project.ProjectLifecycleController.lambda$ensureSelfConfigured$1( ProjectLifecycleController.java:63 ) at org.gradle.internal.model.StateTransitionController.lambda$doTransition$12( StateTransitionController.java:236 ) at org.gradle.internal.model.StateTransitionController.doTransition( StateTransitionController.java:247 ) at org.gradle.internal.model.StateTransitionController.doTransition( StateTransitionController.java:235 ) at org.gradle.internal.model.StateTransitionController.lambda$maybeTransitionIfNotCurrentlyTransitioning$9( StateTransitionController.java:196 ) at org.gradle.internal.work .DefaultSynchronizer.withLock( DefaultSynchronizer.java:34 ) at org.gradle.internal.model.StateTransitionController.maybeTransitionIfNotCurrentlyTransitioning( StateTransitionController.java:192 ) at org.gradle.api.internal.project.ProjectLifecycleController.ensureSelfConfigured( ProjectLifecycleController.java:63 ) at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.ensureConfigured( DefaultProjectStateRegistry.java:334 ) at org.gradle.execution.TaskPathProjectEvaluator.configure( TaskPathProjectEvaluator.java:33 ) at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy( TaskPathProjectEvaluator.java:47 ) at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects( DefaultProjectsPreparer.java:50 ) at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects( BuildTreePreparingProjectsPreparer.java:64 ) at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run( BuildOperationFiringProjectsPreparer.java:52 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute( DefaultBuildOperationRunner.java:29 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute( DefaultBuildOperationRunner.java:26 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:66 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:157 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.run ( DefaultBuildOperationRunner.java:47 ) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run ( DefaultBuildOperationExecutor.java:68 ) at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects( BuildOperationFiringProjectsPreparer.java:40 ) at org.gradle.initialization.VintageBuildModelController.lambda$prepareProjects$2( VintageBuildModelController.java:84 ) at org.gradle.internal.model.StateTransitionController.lambda$doTransition$12( StateTransitionController.java:236 ) at org.gradle.internal.model.StateTransitionController.doTransition( StateTransitionController.java:247 ) at org.gradle.internal.model.StateTransitionController.doTransition( StateTransitionController.java:235 ) at org.gradle.internal.model.StateTransitionController.lambda$transitionIfNotPreviously$10( StateTransitionController.java:210 ) at org.gradle.internal.work .DefaultSynchronizer.withLock( DefaultSynchronizer.java:34 ) at org.gradle.internal.model.StateTransitionController.transitionIfNotPreviously( StateTransitionController.java:206 ) at org.gradle.initialization.VintageBuildModelController.prepareProjects( VintageBuildModelController.java:84 ) at org.gradle.initialization.VintageBuildModelController.getConfiguredModel( VintageBuildModelController.java:64 ) at org.gradle.internal.build .DefaultBuildLifecycleController.lambda$withProjectsConfigured$1( DefaultBuildLifecycleController.java:116 ) at org.gradle.internal.model.StateTransitionController.lambda$notInState$3( StateTransitionController.java:143 ) at org.gradle.internal.work .DefaultSynchronizer.withLock( DefaultSynchronizer.java:44 ) at org.gradle.internal.model.StateTransitionController.notInState( StateTransitionController.java:139 ) at org.gradle.internal.build .DefaultBuildLifecycleController.withProjectsConfigured( DefaultBuildLifecycleController.java:116 ) at org.gradle.internal.build .DefaultBuildToolingModelController.locateBuilderForTarget( DefaultBuildToolingModelController.java:57 ) at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildTreeModelController.lambda$locateBuilderForTarget$0( DefaultBuildTreeModelCreator.java:73 ) at org.gradle.internal.build .DefaultBuildLifecycleController.withToolingModels( DefaultBuildLifecycleController.java:180 ) at org.gradle.internal.build .AbstractBuildState.withToolingModels( AbstractBuildState.java:123 ) at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildTreeModelController.locateBuilderForTarget( DefaultBuildTreeModelCreator.java:73 ) at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildTreeModelController.locateBuilderForDefaultTarget( DefaultBuildTreeModelCreator.java:68 ) at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getTarget( DefaultBuildController.java:157 ) at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getModel( DefaultBuildController.java:101 ) at org.gradle.tooling.internal.consumer.connection.ParameterAwareBuildControllerAdapter.getModel( ParameterAwareBuildControllerAdapter.java:39 ) at org.gradle.tooling.internal.consumer.connection.UnparameterizedBuildController.getModel( UnparameterizedBuildController.java:113 ) at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter.getModel( NestedActionAwareBuildControllerAdapter.java:31 ) at org.gradle.tooling.internal.consumer.connection.UnparameterizedBuildController.findModel( UnparameterizedBuildController.java:97 ) at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter.findModel( NestedActionAwareBuildControllerAdapter.java:31 ) at org.gradle.tooling.internal.consumer.connection.UnparameterizedBuildController.findModel( UnparameterizedBuildController.java:81 ) at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter.findModel( NestedActionAwareBuildControllerAdapter.java:31 ) at org.gradle.tooling.internal.consumer.connection.UnparameterizedBuildController.findModel( UnparameterizedBuildController.java:66 ) at org.gradle.tooling.internal.consumer.connection.NestedActionAwareBuildControllerAdapter.findModel( NestedActionAwareBuildControllerAdapter.java:31 ) at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute( ProjectImportAction.java:126 ) at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute( ProjectImportAction.java:43 ) at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute( InternalBuildActionAdapter.java:64 ) at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.runAction( AbstractClientProvidedBuildActionRunner.java:131 ) at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.beforeTasks( AbstractClientProvidedBuildActionRunner.java:99 ) at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator.beforeTasks( DefaultBuildTreeModelCreator.java:52 ) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$fromBuildModel$2( DefaultBuildTreeLifecycleController.java:82 ) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$5( DefaultBuildTreeLifecycleController.java:113 ) at org.gradle.internal.model.StateTransitionController.lambda$transition$5( StateTransitionController.java:166 ) at org.gradle.internal.model.StateTransitionController.doTransition( StateTransitionController.java:247 ) at org.gradle.internal.model.StateTransitionController.lambda$transition$6( StateTransitionController.java:166 ) at org.gradle.internal.work .DefaultSynchronizer.withLock( DefaultSynchronizer.java:44 ) at org.gradle.internal.model.StateTransitionController.transition( StateTransitionController.java:166 ) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild( DefaultBuildTreeLifecycleController.java:110 ) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.fromBuildModel( DefaultBuildTreeLifecycleController.java:81 ) at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction( AbstractClientProvidedBuildActionRunner.java:43 ) at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run ( ClientProvidedPhasedActionRunner.java:53 ) at org.gradle.launcher.exec.ChainingBuildActionRunner.run ( ChainingBuildActionRunner.java:35 ) at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run ( ProblemReportingBuildActionRunner.java:49 ) at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run ( BuildOutcomeReportingBuildActionRunner.java:65 ) at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run ( FileSystemWatchingBuildActionRunner.java:136 ) at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run ( BuildCompletionNotifyingBuildActionRunner.java:41 ) at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0( RootBuildLifecycleBuildActionExecutor.java:40 ) at org.gradle.composite.internal.DefaultRootBuildState.run ( DefaultRootBuildState.java:122 ) at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute( RootBuildLifecycleBuildActionExecutor.java:40 ) at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute( DefaultBuildTreeContext.java:40 ) at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0( BuildTreeLifecycleBuildActionExecutor.java:65 ) at org.gradle.internal.buildtree.BuildTreeState.run ( BuildTreeState.java:53 ) at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute( BuildTreeLifecycleBuildActionExecutor.java:65 ) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call( RunAsBuildOperationBuildActionExecutor.java:61 ) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call( RunAsBuildOperationBuildActionExecutor.java:57 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute( DefaultBuildOperationRunner.java:204 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute( DefaultBuildOperationRunner.java:199 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:66 ) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:157 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute( DefaultBuildOperationRunner.java:59 ) at org.gradle.internal.operations.DefaultBuildOperationRunner.call ( DefaultBuildOperationRunner.java:53 ) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call ( DefaultBuildOperationExecutor.java:73 ) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute( RunAsBuildOperationBuildActionExecutor.java:57 ) at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0( RunAsWorkerThreadBuildActionExecutor.java:36 ) at org.gradle.internal.work .DefaultWorkerLeaseService.withLocks( DefaultWorkerLeaseService.java:249 ) at org.gradle.internal.work .DefaultWorkerLeaseService.runAsWorkerThread( DefaultWorkerLeaseService.java:109 ) at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute( RunAsWorkerThreadBuildActionExecutor.java:36 ) at org.gradle.tooling.internal.provider.continuous.ContinuousBuildActionExecutor.execute( ContinuousBuildActionExecutor.java:110 ) at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute( SubscribableBuildActionExecutor.java:64 ) at org.gradle.internal.session.DefaultBuildSessionContext.execute( DefaultBuildSessionContext.java:46 ) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply( BuildSessionLifecycleBuildActionExecuter.java:100 ) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply( BuildSessionLifecycleBuildActionExecuter.java:88 ) at org.gradle.internal.session.BuildSessionState.run ( BuildSessionState.java:69 ) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute( BuildSessionLifecycleBuildActionExecuter.java:62 ) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute( BuildSessionLifecycleBuildActionExecuter.java:41 ) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute( StartParamsValidatingActionExecuter.java:63 ) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute( StartParamsValidatingActionExecuter.java:31 ) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute( SessionFailureReportingActionExecuter.java:52 ) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute( SessionFailureReportingActionExecuter.java:40 ) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute( SetupLoggingActionExecuter.java:47 ) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute( SetupLoggingActionExecuter.java:31 ) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild( ExecuteBuild.java:65 ) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute( BuildCommandOnly.java:37 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute( WatchForDisconnection.java:39 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute( ResetDeprecationLogger.java:29 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute( RequestStopIfSingleUsedDaemon.java:35 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create( ForwardClientInput.java:78 ) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create( ForwardClientInput.java:75 ) at org.gradle.util.internal.Swapper.swap( Swapper.java:38 ) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute( ForwardClientInput.java:75 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute( LogAndCheckHealth.java:55 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild( LogToClient.java:63 ) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute( BuildCommandOnly.java:37 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild( EstablishBuildEnvironment.java:84 ) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute( BuildCommandOnly.java:37 ) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed( DaemonCommandExecution.java:104 ) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run( StartBuildOrRespondWithBusy.java:52 ) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run( DaemonStateCoordinator.java:297 ) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute( ExecutorPolicy.java:64 ) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run( ManagedExecutorImpl.java:49 ) Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism ... 268 more Caused by: java.lang.SecurityException: Can't read cryptographic policy directory: unlimited ... 268 more 이건 전체오류내용입니다 혹시 해결가능하실까요... 만드시는것처럼 똑같이 생성했습니다 ㅠㅠ
사용자 정의 ExitStatus 를 StepExecutionListener.afterStep 에서 정의하는 이유가 궁금합니다. Tasklet 안에서 조건에 따라 contribution.setExitStatus(new ExitStatus("PASS")); 를 사용해도 되는게 아닌가 싶은데, 그냥 afterStep 에서도 할 수 있다는걸 보여준걸까요? 또, 다음 강의인 JobExecutionDecider 는 사용자 정의 StepExecutionListener.afterStep 에서 사용자 종료 코드를 정의하는 것을 대체한다고 생각하면 되는걸까요?
config: name: ecommerce import: optional:configserver:http://localhost:8888 # boot 2.4부터 부트스트랩 x application: name: USER-SERVICE 이렇게 된 경우 config name 을 가져가는게 아니라 application name 으로 yaml 을 계속 찾네요.. 흠.. 자답합니다 스프링부트 2.7.11 config, bootstrap 아래 의존성으로 교체 <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-config --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> <version>3.1.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.3</version> </dependency> application.yml 에 아래 코드추가 spring: config: import: classpath:/bootstrap.yml bootstrap.yml은 동일히 작성 위 과정 거치고 돌렸더니 드디어... config 가져오네요... springboot 버전과 의존 라이브러리 최신버전과 호환이 안되었던건지 이틀 간 찾아본듯 😂 spring boot 2.7.x 버전 yml 설정 이렇게 하면 됩니다. - 인프런 | 질문 & 답변 ( inflearn.com )
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. jar -xvf embed-0.0.1-SNAPSHOT.jar 압축을풀면 아래와같은 디렉토리가 생성됨과 동시에 jar풀면서 오류가 발생하는데 이게 맞을까요??,, 혹시 해결방법이 있는지 문의드립니다.
회원 가입 시 DB에 정상적으로 회원 정보가 생성은 되는데 이 후 로그인 시도 시 CustomAuthenticationProvider에서 userDetailsService.loadUserByUsername(username); 수행 시 Null을 반환합니다. java.lang.NullPointerException: Cannot invoke " io.security.corespringsecurity.security .service.CustomUserDetailsService.loadUserByUsername(String)" because "this.userDetailsService" is null at io.security.corespringsecurity.security .provider.CustomAuthenticationProvider.authenticate( CustomAuthenticationProvider.java:26 ) ~[classes/:na]
안녕하세요! 좋은 강의 제공해주셔서 감사합니다. mvn spring-boot: run-Dspring-boot.run .jvmArguments='-Dserver.port=9003' 다음과 같은 명령어나 실행 옵션에서 -D와 같은 옵션을 띄어쓰기 없이 사용하는 이유가 있을까요?
안녕하세요! 좋은 강의 제공해주셔서 감사합니다. mvn spring-boot: run-Dspring-boot.run .jvmArguments='-Dserver.port=9003' 다음과 같은 명령어나 실행 옵션에서 -D와 같은 옵션을 띄어쓰기 없이 사용하는 이유가 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. CommentRepositoryTest에서 findByNickname를 실행할때 아래와 같은 오류가 나타납니다. org.springframework.dao.InvalidDataAccessApiUsageException: Could not locate ordinal parameter [1], expecting one of []; nested exception is java.lang.IllegalArgumentException: Could not locate ordinal parameter [1], expecting one of []가 나타나는데, 찾아보니 @Param을 하라고 하네요. 근데 @Param은 @Query를 사용할때에 대한 해결방안인데, xml로 쿼리를 작성한 findByNickname에서는 어떻게 해결해야하나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 김영한님의 스프링, 스프링부트 강의를 정말 재밌게 듣고 있는 한 대학생입니다. 강의를 듣던 중에 공부방향에 대해서 궁금한 것이 생겼는데요. 이번 웹 계층 개발 파트에서는 특히 js나 css에 대한 내용들이 thymleaf와 함께 많이 다루어지는 것 같습니다. 물론 기본적인 html태그들은 그냥 자주 보다보면 외워지겠지만 이런 부분들을 본격적으로 따로 공부할 필요가 있는지 궁금합니다. 나중에 실무에서 제가 DB설계를 하고 도메인, 서비스 계층을 짜는 것은 상상이 되고 지금 공부하고 있는 방향과도 맞는 것 같아서 재밌을 것 같은데, 이런 프론트적인 부분? 은 그냥 복붙하고 넘기면 되는지, 아니면 실무에서 제가 실제로 다루게 될 부분일지 경계가 모호한 것 같습니다. 정리하자면, 1. 실무에서 백엔드 개발자는 어떤 일을 주로 맡게 되는지, 2. 그래서 이번 웹 계층 파트에서 다루어지는 thymleaf나 js,css, html 내용을 본격적으로 공부해야 하는지 궁금합니다.
[질문 내용] 회원서비스개발에서 2:18에 1. 무슨 단축키를 누르면 Optional<Member> byName = 이 뜨나요? 저는 그냥 타이핑했는데 어떻게 하면 그렇게 생기죠? 2.그리고 단축키 command option v 로 byName을 result로 변경했는데 그것도 단축키를 하면 왜 단축키를 했을 때 수업처럼 옵션이 안뜰까요 3.Optional<Member> byName = 부분 지우고 result부분 지우고 코드 정리했을 때 저는 .ifPresent부분이 에러가 납니다. 4.강의에 4:56 부분 control + t 로 method입력해서 Extract Method 가 뜨는데 저는 안뜹니다. command option m 단축키로 Extract Method를 시도했는데 사용할수없다는데..어떻게해야되나요 확인부탁드릴게요...
안녕하세요 강사님. 강의를 따라 실습하는데 강사님과 다르게 동작합니다. 이유를 못찾아서 도움이 필요합니다 ㅠㅠ 7) Ajax로그인 구현 & CSRF설정 15:00 부분 강의에서는 브라우저에서 window.location = '/api/login?error=true&exception=' + xhr.responseJSON.message; 호출이후 서버에서 로그인 컨트롤러가 호출되는데, 저는 window.location 이후 AjaxLoginAuthenticationEntryPoint 가 다시 호출됩니다. 그래서 AjaxSecurityConfig 클래스에 .antMatchers("/api/login/**").permitAll() 를 추가해서 테스트 해보았더니 컨트롤러가 호출 되었습니다. 왜 강사님과 다르게 저는 window.location 이후 AjaxLoginAuthenticationEntryPoint가 왜 다시 호출되는지 알 수 있을까요? https://github.com/GwanUk/basicsecurity.git
main] org.hibernate.SQL : drop table if exists category CASCADE 이런 식으로 전부 다 main] org.hibernate.SQL 오류로 인해서 table 형태가 보이지 않아요..yml에 들어가보니 logging.level.org.hibernate.SQL: debug에 빨간불이 들어옵니다. 어떻게 하면 해결할 수 있을까요?