`
y806839048
  • 浏览: 1126319 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

springboot三种通过代码达到配置的方式 @Configuration

阅读更多

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;

}

 

}

 

 

 

 

 

分享到:
评论

相关推荐

    springboot整合nacos完整代码

    通过对这些代码的学习和分析,可以更深入地理解SpringBoot与Nacos的整合方式。 以上就是关于"springboot整合nacos完整代码"这个项目的重点内容,这个项目对于理解和实践SpringBoot与Nacos的集成非常有帮助,通过它...

    SpringBoot配置Apollo代码实例

    SpringBoot 配置 Apollo 代码实例主要介绍了如何将 Apollo 配置中心集成到 SpringBoot 项目中,通过示例代码详细介绍了配置过程,并提供了详细的代码示例,供大家学习和工作使用。 一、引入 Apollo 依赖 在 ...

    SpringBoot-2.7.6读取配置文件的方式

    在Spring Boot 2.7.6中,配置文件的管理是整个框架的核心功能之一,它使得开发者能够方便地...以上就是Spring Boot 2.7.6读取配置文件的基本方式及其相关知识,希望对你在理解和使用Spring Boot配置管理上有所帮助。

    springboot简单源代码

    `@SpringBootApplication` 是一个组合注解,包含 `@Configuration`(表示当前类为配置类)、`@EnableAutoConfiguration`(开启自动配置)和 `@ComponentScan`(组件扫描)。通过 `@ComponentScan`,SpringBoot 会...

    springboot集成mybatis的两种使用方式

    Spring Boot结合MyBatis Plus(一个MyBatis的增强工具)提供了一种更简洁的集成方式,通过注解即可完成大部分配置。首先,引入MyBatis Plus的依赖,然后在配置类中启用MyBatis Plus: ```java @Configuration ...

    springboot多数据源配置

    总之,Spring Boot的多数据源配置涉及多个层面,包括依赖管理、配置类、数据源对象创建、JPA实体管理工厂、事务管理器以及业务代码中的数据源选择。通过合理配置,我们可以轻松地实现对多个数据库的管理和操作。

    springboot教程项目代码

    SpringBoot的核心思想是“约定优于配置”,它通过自动配置的方式,减少了繁杂的XML配置文件,使得开发变得更加高效。此外,SpringBoot内置了Tomcat服务器,使得我们可以直接运行jar包来启动服务,无需额外部署。 在...

    springboot +mybatis+oracle 配置多个数据源,配置两个数据库信息

    在Spring Boot项目中,我们经常会遇到需要连接多个数据库的需求,比如主从数据库、读写分离等场景。本配置示例将详细介绍如何在Spring ...通过这种方式,我们可以灵活地管理和操作多个数据库,满足复杂的应用场景需求。

    SpringBoot入门_实战

    通过本文,我们了解了SpringBoot的基础知识和实践经验,包括SpringBoot的发展历程、Java配置方式、注解的使用、HttpClient的配置等。 在实践中,我们可以使用SpringBoot来开发基于Web的应用程序,从而提高开发效率...

    SpringBoot+mybatis+Oracle整合代码

    在SpringBoot项目中,这些配置可以通过@Configuration注解的类来实现,例如设置数据源(DataSource)和事务管理器(PlatformTransactionManager)。 3. **Oracle数据库连接**:SpringBoot支持多种数据库,包括...

    自定义@Configuration配置类启用开关.zip

    在Spring Boot框架中,`@Configuration`注解是核心组件之一,它用于标记一个类作为配置类,使得我们可以使用Java配置来替代XML配置。在这个"自定义@Configuration配置类启用开关.zip"项目中,我们很显然会看到如何...

    springBoot 的代码示例

    它集成了大量常用的第三方库配置,如数据源、JPA、MVC、security 等,使得开发者可以快速地进行开发而无需手动配置。 在“springBoot 的代码示例”中,我们主要会接触到以下几个核心知识点: 1. **Druid 数据源**...

    springboot论坛项目代码注释

    通过以上讲解,我们可以看到"springboot论坛项目代码注释"不仅涵盖了 Spring Boot 的核心技术,还涉及到实际项目开发中的常见模块。对于学习和实践 Spring Boot 开发者来说,这是一个极佳的参考资源。

    SpringBoot企业级开发教程_源代码.zip

    SpringBoot的核心特性之一是起步驱动配置(Starter POMs),它允许开发者通过引入特定的依赖来快速配置和启用服务。在源代码中,可以看到`pom.xml`文件中如何声明这些起步依赖,如`spring-boot-starter-web`用于Web...

    springboot整合jetcache完整代码

    接下来,通过Java配置或者@Configuration注解的类来创建JetCache实例。在SpringBoot中,你可以创建一个名为CacheConfig的配置类,然后使用@Bean注解来定义JetCache实例: ```java @Configuration public class ...

    Springboot @Configuration @bean注解作用解析

    1. 配置第三方框架:在 Spring Boot 项目中,我们可以使用 @Configuration 和 @Bean 注解来配置第三方框架,例如 Shiro 框架。 2. 注册 Bean:我们可以使用 @Bean 注解来注册 Bean 到 Spring 容器中,以便其他组件...

    SpringBoot学习代码模拟SpringBoot框架底层原理源代码

    3. **起步依赖**:SpringBoot的starter POMs提供了一种快速配置Spring及第三方库的方式。例如,`spring-boot-starter-web`包含了开发Web应用所需的全部依赖。 4. **命令行接口(CLI)**:SpringBoot提供了命令行...

    自定义@Configuration配置类启用开关第二个版本.zip

    在Spring Boot应用中,`@Configuration`注解用于标记一个类作为配置类,它提供了声明式的方式来装配Bean。在标题提到的“自定义@Configuration配置类启用开关第二个版本.zip”中,我们可以推测这是一个关于如何在...

    springboot的应用架构代码

    3. **自动配置(Auto Configuration)**:SpringBoot会根据类路径中的类和jar文件自动配置Spring上下文。例如,如果检测到HSQLDB数据库驱动在类路径中,那么它将自动配置一个内存数据库连接。 4. **Actuator**:...

    手写SpringBoot相关代码

    通过手写SpringBoot代码,我们可以更深入地了解其工作原理,更好地掌握SpringBoot的配置和使用技巧。这包括自动配置的理解、条件化注解的应用、RESTful API的设计以及配置文件的管理。同时,这也有助于我们在实际...

Global site tag (gtag.js) - Google Analytics