我设置了我的spring Boot 应用程序
@EnableJpaRepositories(...)
@EntityScan(...)
它运行良好,连接到数据库,创建表和检索数据所需的。
下一步我决定按照一个例子来介绍社交登录功能和添加配置:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeRequests()
.requestMatchers("/", "/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().permitAll()
.loginPage("/login")
.usernameParameter("email")
.passwordParameter("pass")
.successHandler(databaseLoginSuccessHandler)
.and()
.oauth2Login()
.loginPage("/login")
.userInfoEndpoint()
.userService(oauth2UserService)
.and()
.successHandler(oauthLoginSuccessHandler)
.and()
.logout().logoutSuccessUrl("/").permitAll()
.and()
.exceptionHandling().accessDeniedPage("/403");
return http.build();
}
@Autowired
private CustomOAuth2UserService oauth2UserService;
@Autowired
private OAuthLoginSuccessHandler oauthLoginSuccessHandler;
@Autowired
private DatabaseLoginSuccessHandler databaseLoginSuccessHandler;
}
它停止工作,出现错误:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
应用程序.yaml提供:
spring:
datasource:
driver-class-name=org.postgresql.Driver
url:jdbc:postgresql://localhost:5432/pennantrace
username:admin
password:123456
jpa:
hibernate:
ddl-auto:create
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
security:
oauth2:
client:
registration:
google:
etc ...
这些配置哪里出错了?
1条答案
按热度按时间lnxxn5zx1#
您的YAML文件格式不正确。首先,您需要使用
:
而不是=
分隔driver-class-name
及其值。其次,您需要在表示Map键的每个:
之后放置一个空格。根据YAML 1.2.2规范:通常情况下,YAML要求“:“Map值指示符与值之间用白色分隔。这种限制的好处是,“:“字符可以在纯标量中使用,只要它后面不跟空格。这允许不带引号的URL和时间戳。它也是一个潜在的混淆源,因为“a:1”是纯标量,而不是键/值对。
第三,为了避免更多的错误,您可能需要考虑将
url
的值放在引号中,最终的application.yaml
可能如下所示: