SaTokenSpringAutowired.java 3.0 KB
Newer Older
1
package cn.dev33.satoken.reactor.spring;
shengzhang_'s avatar
shengzhang_ 已提交
2 3 4 5 6

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
7
import org.springframework.util.PathMatcher;
shengzhang_'s avatar
shengzhang_ 已提交
8 9 10 11

import cn.dev33.satoken.SaTokenManager;
import cn.dev33.satoken.action.SaTokenAction;
import cn.dev33.satoken.config.SaTokenConfig;
12
import cn.dev33.satoken.context.SaTokenContext;
13
import cn.dev33.satoken.context.SaTokenContextForThreadLocal;
shengzhang_'s avatar
shengzhang_ 已提交
14
import cn.dev33.satoken.dao.SaTokenDao;
shengzhang_'s avatar
shengzhang_ 已提交
15
import cn.dev33.satoken.listener.SaTokenListener;
shengzhang_'s avatar
shengzhang_ 已提交
16 17 18
import cn.dev33.satoken.stp.StpInterface;

/**
shengzhang_'s avatar
shengzhang_ 已提交
19 20
 * 利用spring的自动装配来加载开发者重写的Bean
 * 
shengzhang_'s avatar
shengzhang_ 已提交
21 22 23 24 25 26 27
 * @author kong
 *
 */
@Component
public class SaTokenSpringAutowired {

	/**
shengzhang_'s avatar
shengzhang_ 已提交
28 29 30
	 * 获取配置Bean
	 * 
	 * @return 配置对象
shengzhang_'s avatar
shengzhang_ 已提交
31 32
	 */
	@Bean
shengzhang_'s avatar
shengzhang_ 已提交
33
	@ConfigurationProperties(prefix = "spring.sa-token")
shengzhang_'s avatar
shengzhang_ 已提交
34 35 36
	public SaTokenConfig getSaTokenConfig() {
		return new SaTokenConfig();
	}
shengzhang_'s avatar
shengzhang_ 已提交
37

shengzhang_'s avatar
shengzhang_ 已提交
38
	/**
shengzhang_'s avatar
shengzhang_ 已提交
39 40
	 * 注入配置Bean
	 * 
shengzhang_'s avatar
shengzhang_ 已提交
41
	 * @param saTokenConfig 配置对象
shengzhang_'s avatar
shengzhang_ 已提交
42 43
	 */
	@Autowired
shengzhang_'s avatar
shengzhang_ 已提交
44
	public void setConfig(SaTokenConfig saTokenConfig) {
shengzhang_'s avatar
shengzhang_ 已提交
45 46 47 48
		SaTokenManager.setConfig(saTokenConfig);
	}

	/**
shengzhang_'s avatar
shengzhang_ 已提交
49 50 51
	 * 注入持久化Bean
	 * 
	 * @param saTokenDao SaTokenDao对象 
shengzhang_'s avatar
shengzhang_ 已提交
52 53
	 */
	@Autowired(required = false)
shengzhang_'s avatar
shengzhang_ 已提交
54
	public void setSaTokenDao(SaTokenDao saTokenDao) {
shengzhang_'s avatar
shengzhang_ 已提交
55 56 57 58
		SaTokenManager.setSaTokenDao(saTokenDao);
	}

	/**
shengzhang_'s avatar
shengzhang_ 已提交
59 60 61
	 * 注入权限认证Bean
	 * 
	 * @param stpInterface StpInterface对象 
shengzhang_'s avatar
shengzhang_ 已提交
62 63
	 */
	@Autowired(required = false)
shengzhang_'s avatar
shengzhang_ 已提交
64
	public void setStpInterface(StpInterface stpInterface) {
shengzhang_'s avatar
shengzhang_ 已提交
65 66 67 68
		SaTokenManager.setStpInterface(stpInterface);
	}

	/**
shengzhang_'s avatar
shengzhang_ 已提交
69 70 71
	 * 注入框架行为Bean
	 * 
	 * @param saTokenAction SaTokenAction对象 
shengzhang_'s avatar
shengzhang_ 已提交
72 73
	 */
	@Autowired(required = false)
shengzhang_'s avatar
shengzhang_ 已提交
74
	public void setSaTokenAction(SaTokenAction saTokenAction) {
shengzhang_'s avatar
shengzhang_ 已提交
75 76 77 78
		SaTokenManager.setSaTokenAction(saTokenAction);
	}

	/**
79
	 * 获取容器交互Bean (ThreadLocal版)
shengzhang_'s avatar
shengzhang_ 已提交
80
	 * 
81
	 * @return 容器交互Bean (ThreadLocal版)
shengzhang_'s avatar
shengzhang_ 已提交
82 83
	 */
	@Bean
84
	public SaTokenContext getSaTokenContext() {
85 86 87 88 89 90 91 92 93
		return new SaTokenContextForThreadLocal() {
			/**
			 * 重写路由匹配方法
			 */
			@Override
			public boolean matchPath(String pattern, String path) {
				return SaPathMatcherHolder.getPathMatcher().match(pattern, path);
			}
		};
shengzhang_'s avatar
shengzhang_ 已提交
94
	}
shengzhang_'s avatar
shengzhang_ 已提交
95

shengzhang_'s avatar
shengzhang_ 已提交
96
	/**
97
	 * 注入容器交互Bean
shengzhang_'s avatar
shengzhang_ 已提交
98
	 * 
99
	 * @param saTokenContext SaTokenContext对象 
shengzhang_'s avatar
shengzhang_ 已提交
100 101
	 */
	@Autowired
102 103
	public void setSaTokenContext(SaTokenContext saTokenContext) {
		SaTokenManager.setSaTokenContext(saTokenContext);
shengzhang_'s avatar
shengzhang_ 已提交
104
	}
105

shengzhang_'s avatar
shengzhang_ 已提交
106 107 108 109 110 111 112 113 114
	/**
	 * 注入监听器Bean
	 * 
	 * @param saTokenListener saTokenListener对象 
	 */
	@Autowired(required = false)
	public void setSaTokenListener(SaTokenListener saTokenListener) {
		SaTokenManager.setSaTokenListener(saTokenListener);
	}
115
	/**
shengzhang_'s avatar
shengzhang_ 已提交
116 117
	 * 利用自动匹配特性,获取SpringMVC框架内部使用的路由匹配器
	 * 
118 119 120
	 * @param pathMatcher 要设置的 pathMatcher
	 */
	@Autowired(required = false)
121
	public void setPathMatcher(PathMatcher pathMatcher) {
122
		SaPathMatcherHolder.setPathMatcher(pathMatcher);
123
	}
shengzhang_'s avatar
shengzhang_ 已提交
124

125

shengzhang_'s avatar
shengzhang_ 已提交
126
}