栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Boot与基于会话的数据源

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot与基于会话的数据源

您的问题与身份验证管理器配置有关。所有示例和指南都将其设置在中

GlobalAuthenticationConfigurerAdapter
,例如,它看起来像是您的内部类
SimpleEmbeddedSecurityConfiguration

@Configurationpublic static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter{    @Bean(name = Global.AUTHENTICATION_DATA_QUALIFIER + "DataSource")    public DataSource dataSource()    {        return new EmbeddedDatabaseBuilder().setName("authdb").setType(EmbeddedDatabaseType.H2).addscripts("security/schema.sql", "security/data.sql").build();    }    @Override    public void init(AuthenticationManagerBuilder auth) throws Exception    { auth.jdbcAuthentication().dataSource(dataSource()).passwordEnprer(passwordEnprer());    }}

如果您不使用,

GlobalAuthenticationConfigurerAdapter
那么
DataSource
在创建安全性过滤器时(
@Primary

DataSource
甚至在bean尚未注册之前),Spring Data
REST就会获取这些获取的内容,并且整个JPA初始化会非常早地开始(不好的主意)。

更新:身份验证管理器不是唯一的问题。如果您需要进行会话范围的操作

@Primary

DataSource
(我会说这很不寻常),则需要在启动时关闭所有需要访问数据库的内容(Hibernate和Spring Boot在各个地方)。例:

spring.datasource.initialize: falsespring.jpa.hibernate.ddlAuto: nonespring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults: falsespring.jpa.properties.hibernate.dialect: H2

进一步更新:如果您使用的是执行器,它还希望在启动时将主要数据源用于运行状况指示器。您可以通过私有相同类型的bean来覆盖它,例如

@Bean@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)@Lazypublic DataSourcePublicMetrics dataSourcePublicMetrics() {    return new DataSourcePublicMetrics();}

PS我相信

GlobalAuthenticationConfigurerAdapter
在Spring Boot
1.2.2中可能并不需要,但在1.2.1或1.1.10中是必需的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455350.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号