[英]How to use SpringSecurity and JDBI
我正在嘗試使用Spring配置服務器。 我想同時使用Spring安全性和JDBI。 因此,我已經配置了服務器(?)的數據源並將其鏈接到JDBI。 但是我無法在WebSecurityConfig中使用此數據源。
這是我的主要配置java文件:
@SpringBootApplication
@EnableAutoConfiguration
public class Application extends WebMvcConfigurerAdapter {
private static DBI dbi = null;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
static DBI getDbi() {
if(dbi == null) {
DataSource ds = JdbcConnectionPool.create("jdbc:h2:mem:test", "ndl", "ndl");
dbi = new DBI(ds);
}
return dbi;
}
}
這是安全彈簧的文件
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html")
.permitAll()
.and()
.logout()
.permitAll();
http.csrf().disable();
}
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username,password from users where username=?")
.authoritiesByUsernameQuery(
"select username, role from users where username=?");
}
}
我得到了這個錯誤。
Field dataSource in rest.WebSecurityConfig required a bean of type 'javax.sql.DataSource' that could not be found.
我試圖在類中(而不是在方法中)編寫DataSource ds。 並添加注釋@Bean。 但是我有另一個錯誤
public static DataSource ds = JdbcConnectionPool.create("jdbc:h2:mem:test", "ndl", "ndl");
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public static DataSource getDataSource(){
return ds;
}
和錯誤
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webSecurityConfig': Injection of autowired dependencies failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/jdbc/core/support/JdbcDaoSupport
希望您有任何想法...謝謝;)
發現問題。
我錯過了以下依賴項:spring-jdbc
所以我最后的build.gradle是
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.8.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
jar {
baseName = 'gs-rest-service'
version = '0.1.0'
}
repositories {
mavenCentral()
maven {
url 'https://repo.spring.io/libs-milestone'
}
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile('org.springframework.boot:spring-boot-starter-test')
compile("org.springframework.boot:spring-boot-starter-security")
testCompile("org.springframework.security:spring-security-test")
compile group: 'org.jdbi', name: 'jdbi', version: '2.4.2'
compile group: 'com.h2database', name: 'h2', version: '1.3.148'
compile group: 'org.springframework', name: 'spring-jdbc', version: '4.3.8.RELEASE'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.