<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">/*</a>
<span class="sourceLineNo">002</span><a id="line.2"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">003</span><a id="line.3"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">004</span><a id="line.4"> * distributed with this work for additional information</a>
<span class="sourceLineNo">005</span><a id="line.5"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">006</span><a id="line.6"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">007</span><a id="line.7"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">008</span><a id="line.8"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">009</span><a id="line.9"> *</a>
<span class="sourceLineNo">010</span><a id="line.10"> *     http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">011</span><a id="line.11"> *</a>
<span class="sourceLineNo">012</span><a id="line.12"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">013</span><a id="line.13"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">014</span><a id="line.14"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">015</span><a id="line.15"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">016</span><a id="line.16"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">017</span><a id="line.17"> * under the License.</a>
<span class="sourceLineNo">018</span><a id="line.18"> */</a>
<span class="sourceLineNo">019</span><a id="line.19">package org.apache.shiro.spring.boot.autoconfigure;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.event.EventBus;</a>
<span class="sourceLineNo">022</span><a id="line.22">import org.apache.shiro.spring.LifecycleBeanPostProcessor;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.apache.shiro.spring.config.AbstractShiroBeanConfiguration;</a>
<span class="sourceLineNo">024</span><a id="line.24">import org.apache.shiro.spring.ShiroEventBusBeanPostProcessor;</a>
<span class="sourceLineNo">025</span><a id="line.25">import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;</a>
<span class="sourceLineNo">026</span><a id="line.26">import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;</a>
<span class="sourceLineNo">027</span><a id="line.27">import org.springframework.context.annotation.Bean;</a>
<span class="sourceLineNo">028</span><a id="line.28">import org.springframework.context.annotation.Configuration;</a>
<span class="sourceLineNo">029</span><a id="line.29"></a>
<span class="sourceLineNo">030</span><a id="line.30">/**</a>
<span class="sourceLineNo">031</span><a id="line.31"> * @since 1.4.0</a>
<span class="sourceLineNo">032</span><a id="line.32"> */</a>
<span class="sourceLineNo">033</span><a id="line.33">@Configuration</a>
<span class="sourceLineNo">034</span><a id="line.34">@ConditionalOnProperty(name = "shiro.enabled", matchIfMissing = true)</a>
<span class="sourceLineNo">035</span><a id="line.35">public class ShiroBeanAutoConfiguration extends AbstractShiroBeanConfiguration {</a>
<span class="sourceLineNo">036</span><a id="line.36"></a>
<span class="sourceLineNo">037</span><a id="line.37">    @Bean</a>
<span class="sourceLineNo">038</span><a id="line.38">    @ConditionalOnMissingBean</a>
<span class="sourceLineNo">039</span><a id="line.39">    @Override</a>
<span class="sourceLineNo">040</span><a id="line.40">    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {</a>
<span class="sourceLineNo">041</span><a id="line.41">        return super.lifecycleBeanPostProcessor();</a>
<span class="sourceLineNo">042</span><a id="line.42">    }</a>
<span class="sourceLineNo">043</span><a id="line.43"></a>
<span class="sourceLineNo">044</span><a id="line.44">    @Bean</a>
<span class="sourceLineNo">045</span><a id="line.45">    @ConditionalOnMissingBean</a>
<span class="sourceLineNo">046</span><a id="line.46">    @Override</a>
<span class="sourceLineNo">047</span><a id="line.47">    protected EventBus eventBus() {</a>
<span class="sourceLineNo">048</span><a id="line.48">        return super.eventBus();</a>
<span class="sourceLineNo">049</span><a id="line.49">    }</a>
<span class="sourceLineNo">050</span><a id="line.50"></a>
<span class="sourceLineNo">051</span><a id="line.51">    @Bean</a>
<span class="sourceLineNo">052</span><a id="line.52">    @ConditionalOnMissingBean</a>
<span class="sourceLineNo">053</span><a id="line.53">    @Override</a>
<span class="sourceLineNo">054</span><a id="line.54">    public ShiroEventBusBeanPostProcessor shiroEventBusAwareBeanPostProcessor() {</a>
<span class="sourceLineNo">055</span><a id="line.55">        return super.shiroEventBusAwareBeanPostProcessor();</a>
<span class="sourceLineNo">056</span><a id="line.56">    }</a>
<span class="sourceLineNo">057</span><a id="line.57">}</a>




























































</pre>
</div>
</main>
</body>
</html>
