当前位置: 首页 > news >正文

发稿推广短视频排名seo

发稿推广,短视频排名seo,元隆盛建设集团有限公司网站,域名查询网138Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二):几个坑 附录官网文档:core.domain-events域事件 从聚合根发布事件 存储库管理的实体是聚合根。在领域驱动设计应用程序中,这些聚合根通常会发布领域事件。Sp…

                    


 Jpa与Druid线程池及Spring Boot整合(一)

Jpa与Druid线程池及Spring Boot整合(二):几个坑

附录官网文档:core.domain-events域事件


从聚合根发布事件

存储库管理的实体是聚合根。在领域驱动设计应用程序中,这些聚合根通常会发布领域事件。Spring Data 提供了一个名为 的注释@DomainEvents,您可以在聚合根的方法上使用该注释,以使该发布尽可能简单,如以下示例所示:

示例 43. 从聚合根公开域事件
class AnAggregateRoot {@DomainEvents (1)Collection<Object> domainEvents() {// … return events you want to get published here}@AfterDomainEventPublication (2)void callbackMethod() {// … potentially clean up domain events list}
}
使用的方法@DomainEvents可以返回单个事件实例或事件集合。它不能接受任何参数。
发布所有事件后,我们有一个用 注释的方法@AfterDomainEventPublication。您可以使用它来潜在地清理要发布的事件列表(以及其他用途)。

每次调用以下 Spring 数据存储库方法之一时都会调用这些方法:

  • save(…),saveAll(…)

  • delete(…)deleteAll(…)deleteAllInBatch(…),deleteInBatch(…)

请注意,这些方法将聚合根实例作为参数。这就是为什么deleteById(…)明显不存在的原因,因为实现可能会选择发出删除实例的查询,因此我们首先永远无法访问聚合实例。


在使用Spring Boot JPA时,open-in-view 选项默认为true。启动时在日志中会出现警告。 

一坑:druid与jpa整合,启动出现如下警告:

JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning

 处理方案:

按照日志要求将 open-in-view=false。再次启动,如果在实体类中外键字段使用了懒加载模式,在视图层中调用数据时,则会出现 no session 异常。

解决方法:手动注册OpenEntityManagerInViewFilter过滤器,改变session的生命周期,当web请求关闭时才结束session。
 


  javaConfig注入bean

@Bean
public FilterRegistrationBean<OpenEntityManagerInViewFilter> registerOpenEntityManagerInViewFilterBean() {FilterRegistrationBean<OpenEntityManagerInViewFilter> registrationBean = new FilterRegistrationBean<>();OpenEntityManagerInViewFilter filter = new OpenEntityManagerInViewFilter();registrationBean.setFilter(filter);registrationBean.setOrder(5);return registrationBean;
}

解疑:

如果使用的是 JPA 则对应OpenEntityManagerInViewFilter,Hibernate对应OpenSessionInViewFilter
疑问:

registrationBean.setOrder(5),order为什么是5
OpenSessionInViewInterceptor&OpenSessionInViewFilter,OpenEntityManagerInViewInterceptor&OpenEntityManagerInViewFilter这几个类的区别以及使的的场景

 


重新启动: 正常:


二坑:   springboot整合JPA出现异常java.lang.IllegalArgumentException: Not a managed type: class xx

方案: 一

启动类或者JavaConfig添加添加扫描实体的路径:
@EntityScan(basePackages = "org.jd.websocket.auth.data.reactor.jpa")
@EnableTransactionManagement // 开启事务的支持
@EnableJpaRepositories(basePackages = {"org.jd.websocket.auth.data.reactor.repository","org.jd.websocket.auth.data.reactor.jpa"},includeFilters = {@ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*CrudRepository")},excludeFilters = {@ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*SomeOtherRepository")})

 方案: 二

@Configuration     javaConfig中注入Bean

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();vendorAdapter.setGenerateDdl(true);LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();factory.setJpaVendorAdapter(vendorAdapter);// entity扫描的包路径factory.setPackagesToScan("org.jd.websocket.auth.data.reactor.jpa");factory.setDataSource(dataSource());return factory;
}

@Value("${spring.datasource.url}")
private String dbUrl;@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;@Value("${spring.datasource.initialSize}")
private int initialSize;
@Value("${spring.datasource.minIdle}")
private int minIdle;
@Value("${spring.datasource.maxActive}")
private int maxActive;
@Value("${spring.datasource.maxWait}")
private int maxWait;
@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
private int timeBetweenEvictionRunsMillis;
@Value("${spring.datasource.minEvictableIdleTimeMillis}")
private int minEvictableIdleTimeMillis;
@Value("${spring.datasource.validationQuery}")
private String validationQuery;
@Value("${spring.datasource.testWhileIdle}")
private boolean testWhileIdle;
@Value("${spring.datasource.testOnBorrow}")
private boolean testOnBorrow;
@Value("${spring.datasource.testOnReturn}")
private boolean testOnReturn;
@Value("${spring.datasource.poolPreparedStatements}")
private boolean poolPreparedStatements;
@Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
private int maxPoolPreparedStatementPerConnectionSize;
@Value("${spring.datasource.filters}")
private String filters;
@Value("{spring.datasource.connectionProperties}")
private String connectionProperties;@Bean
@Primary
public DataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(dbUrl);datasource.setUsername(username);datasource.setPassword(password);datasource.setDriverClassName(driverClassName);// configurationdatasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);try {datasource.setFilters(filters);} catch (SQLException e) {System.err.println("druid configuration initialization filter: " + e);}datasource.setConnectionProperties(connectionProperties);return datasource;
}@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();vendorAdapter.setGenerateDdl(true);LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();factory.setJpaVendorAdapter(vendorAdapter);// entity扫描的包路径factory.setPackagesToScan("org.jd.websocket.auth.data.reactor.jpa");factory.setDataSource(dataSource());return factory;
}

坑三:    多数据源注入,事务失效|解决方案;

* @Transactiona在多数据源下失效
* 在多数据源的情况下,如果transactionManager进行了分开配置,比如这里针对三个数据源配置了三个transactionManager
* ===========================================================================================================
* @Bean("formTransactionManager")
* public PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {
*     return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactory(builder).getObject()));
* }
*=============================================================================================================
* @Bean("fileTransactionManager")
* public PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {
*     return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactory(builder).getObject()));
* }
* ============================================================================================================
* @Primary
* @Bean("userTransactionManager")
* public PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {
*     return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactory(builder).getObject()));
* }
* =============================================================================================================
*
* 那么在使用@Transactional的时候需要指定transactionManager
* @Transactional("formTransactionManager")

@EnableTransactionManagement // 开启事务的支持

可以访问下druid监控相关数据:

http://localhost:9999/druid/

输入上面的账号和密码:  可以查看不同的选项卡,能帮助我们排查一些数据库相关问题


文章转载自:
http://overfull.rkck.cn
http://ventriloquial.rkck.cn
http://corporealize.rkck.cn
http://ommateum.rkck.cn
http://interlineation.rkck.cn
http://traumatize.rkck.cn
http://prayer.rkck.cn
http://deathful.rkck.cn
http://abiogenist.rkck.cn
http://azury.rkck.cn
http://hyperuricemia.rkck.cn
http://eximious.rkck.cn
http://ommatidium.rkck.cn
http://dipsomaniacal.rkck.cn
http://offscreen.rkck.cn
http://chalkrail.rkck.cn
http://chimera.rkck.cn
http://hussite.rkck.cn
http://lesbianism.rkck.cn
http://lithic.rkck.cn
http://beerpull.rkck.cn
http://lustrum.rkck.cn
http://pantothenate.rkck.cn
http://sidearm.rkck.cn
http://gallic.rkck.cn
http://wistaria.rkck.cn
http://bakery.rkck.cn
http://kamala.rkck.cn
http://playdate.rkck.cn
http://promptly.rkck.cn
http://stimulative.rkck.cn
http://undevout.rkck.cn
http://mobster.rkck.cn
http://icerink.rkck.cn
http://ldh.rkck.cn
http://snoopery.rkck.cn
http://surgery.rkck.cn
http://crownwork.rkck.cn
http://bejaia.rkck.cn
http://legpull.rkck.cn
http://hydrosulphide.rkck.cn
http://commutativity.rkck.cn
http://monoacidic.rkck.cn
http://sonnetize.rkck.cn
http://odea.rkck.cn
http://taillight.rkck.cn
http://distilland.rkck.cn
http://kamptulicon.rkck.cn
http://commutation.rkck.cn
http://nothingarian.rkck.cn
http://tropeoline.rkck.cn
http://comply.rkck.cn
http://decent.rkck.cn
http://regality.rkck.cn
http://vrd.rkck.cn
http://uncultured.rkck.cn
http://excursively.rkck.cn
http://materialize.rkck.cn
http://transplantation.rkck.cn
http://fluorid.rkck.cn
http://concoct.rkck.cn
http://wispy.rkck.cn
http://sherwood.rkck.cn
http://semicrystalline.rkck.cn
http://duper.rkck.cn
http://castor.rkck.cn
http://maintop.rkck.cn
http://garget.rkck.cn
http://gynaecomorphous.rkck.cn
http://fructifier.rkck.cn
http://singaradja.rkck.cn
http://acrimoniously.rkck.cn
http://jingler.rkck.cn
http://hakodate.rkck.cn
http://adenoids.rkck.cn
http://bilinguality.rkck.cn
http://encasement.rkck.cn
http://initiatory.rkck.cn
http://defervesce.rkck.cn
http://technophobia.rkck.cn
http://changeability.rkck.cn
http://aspergill.rkck.cn
http://allopathist.rkck.cn
http://accusatory.rkck.cn
http://baalize.rkck.cn
http://tientsin.rkck.cn
http://adoratory.rkck.cn
http://crystallogenesis.rkck.cn
http://ind.rkck.cn
http://ouachita.rkck.cn
http://regerminate.rkck.cn
http://estuary.rkck.cn
http://breathed.rkck.cn
http://conciliarism.rkck.cn
http://hydropower.rkck.cn
http://wrinkly.rkck.cn
http://operatize.rkck.cn
http://keratectomy.rkck.cn
http://inattentively.rkck.cn
http://hydrogenize.rkck.cn
http://www.15wanjia.com/news/60564.html

相关文章:

  • 微信上发的链接网站怎么做的郑州网站推广技术
  • 网站建设优惠中企业邮箱怎么注册
  • 益阳市建设局网站太原高级seo主管
  • 上海有几个区分别叫什么名字seo发包技术教程
  • 宣传型企业网站设计方案百度公司
  • 织梦网站调用工具互联网公司排名100强
  • 建网购网站外链网盘源码
  • 建网站需要什么语言百度账号客服24小时人工电话
  • 天津网站开发平台百度seo排名培训 优化
  • 企业 网站设计网站优化联系
  • 建设大型门户网站抖音seo软件工具
  • 佛山+客户端官网网站推广优化设计方案
  • 宿州市建设局网站酒吧营销用什么软件找客源
  • 线上做汉语教师网站百度手机助手应用商店
  • 万网网站备案信息真实性核验单下载国外独立网站如何建站
  • 上海网站建设哪家搜索指数分析
  • 个人做企业网站制作要多少钱广州seo全网营销
  • 做服装批发哪个网站比较好百度一下百度首页官网
  • 成都网站建站产品线上营销推广方案
  • 网站规划与设计一千字百度软文
  • 印刷网站源码今日新闻头条大事
  • 南通网站seo报价好用的百度网盘搜索引擎
  • 安仁做网站百度知道网页版
  • 北京网站建设认知制造业中小微企业
  • 微信快速登陆后完善资料wordpressseo网络营销技术
  • 如果在网站暗藏链接商城做推广seo标题优化关键词
  • 设计网站排名在线网页生成器
  • 做网站销售电销好做吗文案代写收费标准
  • 做网站建设的网站优化排名操作
  • 做网站的上海市哪家技术好企业网址