Heim Java javaLernprogramm So verwenden Sie @Configuration- und @bean-Annotationen in Springboot

So verwenden Sie @Configuration- und @bean-Annotationen in Springboot

May 12, 2023 pm 02:46 PM
springboot @configuration @bean

@Konfigurationsanmerkungen können den Effekt der Verwendung von XML-Konfigurationsdateien in Spring erzielen

@Bean entspricht <Bean> in der XML-Konfigurationsdatei

Im Spring-Projekt integrieren wir Frameworks von Drittanbietern wie Shiro und es wird im Frühjahr verwendet. Konfigurieren Sie es in der .xml-Konfigurationsdatei, zum Beispiel:

&lt;!-- 配置shiro框架提供过滤器工厂 --&gt;
  &lt;bean id=&quot;shiroFilter&quot; class=&quot;org.apache.shiro.spring.web.ShiroFilterFactoryBean&quot;&gt;
    &lt;!-- 注入shiro核心组件安全管理器 --&gt;
    &lt;property name=&quot;securityManager&quot; ref=&quot;securityManager&quot;&gt;&lt;/property&gt;
    &lt;!-- 注入相关页面 --&gt;
    &lt;property name=&quot;loginUrl&quot; value=&quot;/login.jsp&quot;&gt;&lt;/property&gt;
    &lt;property name=&quot;unauthorizedUrl&quot; value=&quot;/unauthorized.jsp&quot;&gt;&lt;/property&gt;
    &lt;!-- 配置过滤器链:配置项目发出url对应拦截规则:指定什么url要求具有什么样权限 --&gt;
    &lt;property name=&quot;filterChainDefinitions&quot;&gt;
      &lt;value&gt;
        /css/**=anon
        /js/**=anon
        /validatecode.jsp*=anon
        /images/**=anon
        /login.jsp=anon
        /service/**=anon
        /**=authc
      &lt;/value&gt;
    &lt;/property&gt;
  &lt;/bean&gt;
  &lt;!-- 配置安全管理器 --&gt;
  &lt;bean id=&quot;securityManager&quot; class=&quot;org.apache.shiro.web.mgt.DefaultWebSecurityManager&quot;&gt;
     &lt;property name=&quot;realms&quot; ref=&quot;bosRealm&quot;&gt;&lt;/property&gt;
     &lt;!-- 使用缓存 --&gt;
     &lt;property name=&quot;cacheManager&quot; ref=&quot;cacheManager&quot;&gt;&lt;/property&gt;
  &lt;/bean&gt;

  &lt;!-- 配置缓存管理器--&gt;
  &lt;bean id=&quot;cacheManager&quot; class=&quot;org.apache.shiro.cache.ehcache.EhCacheManager&quot;&gt;
     &lt;!-- 加载ehcache的配置文件,指定缓存策略 --&gt;
    &lt;property name=&quot;cacheManager&quot; ref=&quot;ehcacheManager&quot;&gt;&lt;/property&gt;
  &lt;/bean&gt; 

  &lt;!-- 开启shiro注解支持 --&gt;
  &lt;bean class=&quot;org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator&quot;&gt;
    &lt;!-- 强制使用cglib代理 --&gt;
    &lt;property name=&quot;proxyTargetClass&quot; value=&quot;true&quot;&gt;&lt;/property&gt;
  &lt;/bean&gt;
  &lt;!-- 配置切面 目的验权,判断当前用户是否有权限调用service层方法 --&gt;
  &lt;bean class=&quot;org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor&quot;&gt;&lt;/bean&gt;
Nach dem Login kopieren

Integrieren Sie Springboot mit Shiro:

@Configuration
public class ShiroConfig {
  @Bean
  public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    shiroFilterFactoryBean.setSecurityManager(securityManager);

    Map&lt;String, String&gt; filterChainDefinitionMap = new HashMap&lt;String, String&gt;();
    shiroFilterFactoryBean.setLoginUrl("/login");
    shiroFilterFactoryBean.setUnauthorizedUrl("/unauthc");
    shiroFilterFactoryBean.setSuccessUrl("/home/index");
    
    filterChainDefinitionMap.put("/*", "anon");
    filterChainDefinitionMap.put("/authc/index", "authc");
    return shiroFilterFactoryBean;
  }

  @Bean
  public HashedCredentialsMatcher hashedCredentialsMatcher() {
    HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
    hashedCredentialsMatcher.setHashAlgorithmName(PasswordHelper.ALGORITHM_NAME); 
    hashedCredentialsMatcher.setHashIterations(PasswordHelper.HASH_ITERATIONS); 
    return hashedCredentialsMatcher;
  }

  @Bean
  public EnceladusShiroRealm shiroRealm() {
    EnceladusShiroRealm shiroRealm = new EnceladusShiroRealm();
    shiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); 
    return shiroRealm;
  }

  @Bean
  public SecurityManager securityManager() {
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    securityManager.setRealm(shiroRealm());
    return securityManager;
  }

  @Bean
  public PasswordHelper passwordHelper() {
    return new PasswordHelper();
  }
}
Nach dem Login kopieren

@Konfigurationsanmerkungen können den Effekt der Verwendung von XML-Konfigurationsdateien im Frühjahr erzielen.

@Bean entspricht <bean>

in der XML-Konfigurationsdatei

Das obige ist der detaillierte Inhalt vonSo verwenden Sie @Configuration- und @bean-Annotationen in Springboot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Jun 01, 2023 am 08:55 AM

Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren

Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren May 30, 2023 pm 02:40 PM

Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren

So implementieren Sie verteilte Sperren mit Redis in SpringBoot So implementieren Sie verteilte Sperren mit Redis in SpringBoot Jun 03, 2023 am 08:16 AM

So implementieren Sie verteilte Sperren mit Redis in SpringBoot

So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann Jun 03, 2023 pm 04:38 PM

So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC

Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Jun 03, 2023 am 11:32 AM

Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren

So erhalten Sie den Wert in application.yml in Springboot So erhalten Sie den Wert in application.yml in Springboot Jun 03, 2023 pm 06:43 PM

So erhalten Sie den Wert in application.yml in Springboot

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden Jun 02, 2023 am 11:07 AM

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden

See all articles