springframework-version 5.0.2.RELEASE
springsecurity版本5.0.0.RELEASE
DemoAppConfig
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.luv2code.springsecurity.demo")
@PropertySource("classpath:persistence-mysql.properties")
public class DemoAppConfig {
@Autowired
private Environment env;
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public DataSource securityDatasoruce(){
ComboPooledDataSource securityDataSource
= new ComboPooledDataSource();
try {
securityDataSource.setDriverClass(env.getProperty("jdbc.driver"));
} catch (PropertyVetoException exc) {
exc.printStackTrace();
}
securityDataSource.setJdbcUrl(env.getProperty("jdbc.url"));
securityDataSource.setUser(env.getProperty("jdbc.user"));
securityDataSource.setPassword(env.getProperty("jdbc.password"));
securityDataSource.setInitialPoolSize(
getIntProperty("connection.pool.initialPoolSize"));
securityDataSource.setMinPoolSize(
getIntProperty("connection.pool.minPoolSize"));
securityDataSource.setMaxPoolSize(
getIntProperty("connection.pool.maxPoolSize"));
securityDataSource.setMaxIdleTime(
getIntProperty("connection.pool.maxIdleTime"));
return securityDatasoruce();
}
private int getIntProperty(String propName){
String propVal=env.getProperty(propName);
int intPropVal=Integer.parseInt(propVal);
return intPropVal;
}
}
我认为我从@Configuration注释中收到错误
每次我运行服务器时,它都会加载一段时间并最终给出异常
DemoSecurityConfig
@Configuration
@EnableWebSecurity
public class DemoSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource securityDataSource;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(securityDataSource);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").hasRole("EMPLOYEE")
.antMatchers("/leaders").hasRole("MANAGER")
.antMatchers("/systems").hasRole("ADMIN")
.and()
.formLogin()
.loginPage("/showMyLoginPage")
.loginProcessingUrl("/authenticateTheUser")
.permitAll()
.and()
.logout().permitAll()
.and()
.exceptionHandling()
.accessDeniedPage("/access-denied");
}
}
在com.luv2code.springsecurity.demo.config.DemoAppConfig $$ EnhancerBySpringCGLIB $$ b4328af6.securityDatasoruce()
在com.luv2code.springsecurity.demo.config.DemoAppConfig.securityDatasoruce(DemoAppConfig.java:81)
在com.luv2code.springsecurity.demo.config.DemoAppConfig $$ EnhancerBySpringCGLIB $$ b4328af6.CGLIB $ securityDatasoruce $ 0()
在com.luv2code.springsecurity.demo.config.DemoAppConfig $$ EnhancerBySpringCGLIB $$ b4328af6 $$ FastClassBySpringCGLIB $$ 5fac1996.invoke()
在org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
在org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361)处
在com.luv2code.springsecurity.demo.config.DemoAppConfig $$ EnhancerBySpringCGLIB $$ b4328af6.securityDatasoruce()
在com.luv2code.springsecurity.demo.config.DemoAppConfig.securityDatasoruce(DemoAppConfig.java:81)
在com.luv2code.springsecurity.demo.config.DemoAppConfig $$ EnhancerBySpringCGLIB $$ b4328af6.CGLIB $ securityDatasoruce $ 0()
在com.luv2code.springsecurity.demo.config.DemoAppConfig $$ EnhancerBySpringCGLIB $$ b4328af6 $$ FastClassBySpringCGLIB $$ 5fac1996.invoke()
在org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
最佳答案
您在DemoAppConfig中返回了函数而不是变量
更改返回securityDatasoruce();返回securityDataSource
现在应该可以了