springboot三种通过代码达到配置的方式 @Configuration
@Configuration用编码实现配置转化
1,单纯的注入配置自己的类,后续类直接io使用(自己加入的配置文件)
ioc,注入
@Configuration
public class ValidatorConfig {
/**
* 报文数据的验证程序
* @return
*/
@Bean
public Validator validator(){
Validator validator = Validation.byProvider( HibernateValidator.class )
.configure()
.failFast( true )
.buildValidatorFactory()
.getValidator();
return validator;
}
@Bean
public PacketValidator packetValidator(){
return new PacketValidator();
}
}
di使用
@Autowired
private PacketValidator packetValidator;
2,覆盖默认的装配配置(覆盖方法) extends 。。。Adpater(复写系统自动装配的配置文件)
@Configuration
public class SettWebMvcConfiger extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//registry.addResourceHandler("/js/");
//registry.addResourceHandler("/static/");
}
}
3,覆盖默认的配置(覆盖bean,覆盖方法),extends 。。。Adapter,并且注入(复写系统自动装配的配置文件)
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CasProperties casProperties;
/** 定义认证用户信息获取来源,密码校验规则等 */
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
super.configure(auth);
auth.authenticationProvider(casAuthenticationProvider());
}
/** 定义安全策略 */
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()// 配置安全策略
.antMatchers("/","/hello","/static/**/*","/public/**/*","/js/**/*","/account/**/*").permitAll()//定义/请求不需要验证
.antMatchers("/*").permitAll()
// .antMatchers("/parj").permitAll()
// .antMatchers("/pacj").permitAll()
//.anyRequest().authenticated()// 其余的所有请求都需要验证
.and().logout().permitAll()// 定义logout不需要验证
.and().formLogin()
.and().csrf().ignoringAntMatchers("/*");
http.exceptionHandling().authenticationEntryPoint(casAuthenticationEntryPoint()).and().addFilter(casAuthenticationFilter()).addFilterBefore(casLogoutFilter(), LogoutFilter.class)
.addFilterBefore(singleSignOutFilter(), CasAuthenticationFilter.class);
}
/** 认证的入口 */
@Bean
public CasAuthenticationEntryPoint casAuthenticationEntryPoint() {
CasAuthenticationEntryPoint casAuthenticationEntryPoint = new CasAuthenticationEntryPoint();
casAuthenticationEntryPoint.setLoginUrl(casProperties.getCasServerLoginUrl());
casAuthenticationEntryPoint.setServiceProperties(serviceProperties());
return casAuthenticationEntryPoint;
}
/** 指定service相关信息 */
@Bean
public ServiceProperties serviceProperties() {
ServiceProperties serviceProperties = new ServiceProperties();
serviceProperties.setService(casProperties.getAppServerUrl() + casProperties.getAppLoginUrl());
serviceProperties.setAuthenticateAllArtifacts(true);
return serviceProperties;
}
/** CAS认证过滤器 */
@Bean
public CasAuthenticationFilter casAuthenticationFilter() throws Exception {
CasAuthenticationFilter casAuthenticationFilter = new CasAuthenticationFilter();
casAuthenticationFilter.setAuthenticationManager(authenticationManager());
casAuthenticationFilter.setFilterProcessesUrl(casProperties.getAppLoginUrl());
return casAuthenticationFilter;
}
/** cas认证Provider */
@Bean
public CasAuthenticationProvider casAuthenticationProvider() {
CasAuthenticationProvider casAuthenticationProvider = new CasAuthenticationProvider();
casAuthenticationProvider.setAuthenticationUserDetailsService(customUserDetailsService());
// casAuthenticationProvider.setUserDetailsService(customUserDetailsService());//这里只是接口类型,实现的接口不一样,都可以的。
casAuthenticationProvider.setServiceProperties(serviceProperties());
casAuthenticationProvider.setTicketValidator(cas20ServiceTicketValidator());
casAuthenticationProvider.setKey("casAuthenticationProviderKey");
return casAuthenticationProvider;
}
/*
* @Bean publicUserDetailsServicecustomUserDetailsService(){
* returnnewCustomUserDetailsService(); }
*/
/** 用户自定义的AuthenticationUserDetailsService */
@Bean
public AuthenticationUserDetailsService<CasAssertionAuthenticationToken> customUserDetailsService() {
return new CustomUserDetailsService();
}
@Bean
public TicketValidator cas20ServiceTicketValidator() {
return new Cas20ServiceTicketValidator(casProperties.getCasServerUrl());
}
/** 单点登出过滤器 */
@Bean
public SingleSignOutFilter singleSignOutFilter() {
SingleSignOutFilter singleSignOutFilter = new SingleSignOutFilter();
singleSignOutFilter.setCasServerUrlPrefix(casProperties.getCasServerUrl());
singleSignOutFilter.setIgnoreInitConfiguration(true);
return singleSignOutFilter;
}
/** 请求单点退出过滤器 */
@Bean
public LogoutFilter casLogoutFilter() {
LogoutFilter logoutFilter = new LogoutFilter(casProperties.getCasServerLogoutUrl(), new SecurityContextLogoutHandler());
logoutFilter.setFilterProcessesUrl(casProperties.getAppLogoutUrl());
return logoutFilter;
}
}
相关推荐
2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值...
2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值...
2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值...
无代码声称和xml配置 SpringBoot的优缺点 优点 快速构建项目 对主流开发框架的无配置集成 项目可独立运行,无需外部依赖Servlet容器 提供运行时的应用监控 极大地提高了开发,...
SpringBoot(powernode) 一、第一个SpringBoot项目 二、打jar包启动测试 三、个性化banner 四、常用注解 4.1回顾spring和java的注解 4.1.1 spring标注类的注解: 4.1.2 spring标注方法的注解: 4.1.3 spring标注...
@SpringBootApplication : 包含了 @ComponentScan、@Configuration 和 @EnableAutoConfiguration 注解。 其中 @ComponentScan 让 spring Boot 扫描到 Configuration 类并把它加入到程序上下文。 @Configuration U...
SpringBoot 整合 WebSocket SpringBoot 是一个基于 Java 的开源框架,提供了一个快速构建生产级别的应用程序的方法。WebSocket 是一种网络通信协议,允许服务器推送数据到客户端,实时地更新客户端的内容。下面将...
最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot...我面临的第一个问题是跨域,浏览器控制台直接报CORS,以我多年开发经验,我果断在后台配置了跨域配置,代码如下: @Configuration publi
- `unicorn-beans` 基础Beans的Definition及Configuration,To C业务可只引入该dependency - `unicorn-sys-api` Sys Module基础实体及API,方便服务拆分 - `unicorn-security` 系统权限模块,包含权限配置管理等。...
这些模块以与在 STS 中完成的方式类似的方式在 NetBeans 中引入了 Spring Boot 配置属性支持。 有关更多信息,请参阅该 从源代码构建 要构建这个插件,你需要做的就是: 确保你已经安装了java和maven git clone ...
基于SpringBoot框架构建的简约投票系统源码,适合用于个人学习,课程设计作业,毕业设计等,项目经过严格测试,确保可以运行! 本项目使用Intellij IDEA构建,你可以使用IDEA直接调试本项目。 配置MySQL数据库 ...
运行 Spring Boot 有三种方式:打包用命令或者放到容器中运行、用 Maven/ Gradle 插件运行、直接执行 main 方法运行。 9. Spring Boot 自动配置原理是什么? Spring Boot 自动配置原理是基于 @...
SpringBoot2.3.2最新官方文档,从0-1介绍了SpringBoot如何构建应用。文档介绍了一些但不限于以下内容的相关技术细节: •构建系统:Maven | Gradle |和|初学者 •最佳实践:代码结构| @Configuration | @...
包括了一些配置信息与基本的增删改查代码,刚入门的同学可以参考这个 demo。 springboot-chart 柱状图、条形图、饼图数据的简单封装。在做一些报表统计时如果涉及到图表,可以参考这个 demo。 参考 的开源代码,修改...
@SpringBootApplication: 包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让Spring Boot扫描到Configuration类并把它加入到程序上下文。 @Configuration: 等同于Spring...
springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题。在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功能。 在一般业务场景,可能你不大关心一个bean是如何被注册进...
③ 代码调用 配置文件 spring.beanstalkd.host=127.0.0.1 spring.beanstalkd.port=11300 消费方 @Slf4j @Configuration(proxyBeanMethods = false) public class WorkConfig extends AbstractTubeConsumerListener {...
Spring Boot是一种用于简化Spring应用初始搭建以及开发过程的框架。以下是一个基本的Spring Boot开发步骤: 环境准备: ...编写配置类(Configuration)来配置Spring Boot的各种设置。 运行和测试:
基于SpringBoot 2.x版本, 目前相对比较全的SpringBoot教学视频,以通俗易懂的方式讲解SpringBoot核心技术, 适合初学者的教程,让你少走弯路! 课程内容包括: 1.SpringBoot简介、优点 2.SpringBoot应用 3.配置...
kafka下载、安装、配置及完整运行代码