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

做司法考试题目的网站网站优化与推广

做司法考试题目的网站,网站优化与推广,产品网站建设哪个好,网站添加cms0. 为啥感觉升级了 win11 之后#xff0c;电脑像是刚买回来的#xff0c;很快 这篇加餐完全是一个意外#xff1a;时隔两年半#xff0c;再看 Springboot-quartz-starter 集成实现的时候#xff0c;不知道为啥我的h2 在应用启动的时候#xff0c;不能自动创建quartz相关…0. 为啥感觉升级了 win11 之后电脑像是刚买回来的很快 这篇加餐完全是一个意外时隔两年半再看 Springboot-quartz-starter 集成实现的时候不知道为啥我的h2 在应用启动的时候不能自动创建quartz相关的schema。后面看了 springboot 的文档据说是可以做到的AI也是这么说的。 没办法只能看 QuartzAutoConfiguration 源码了。于是乎就有了这么个好活 没办法就当是一个支线任务了 1. AbstractScriptDatabaseInitializer 下面是熟悉的阉割后的 源码 package org.springframework.boot.sql.init;/*** Base class for an {link InitializingBean} that performs SQL database initialization* using schema (DDL) and data (DML) scripts.** author Andy Wilkinson* since 2.5.0*/ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoaderAware, InitializingBean {// 构造入参配置private final DatabaseInitializationSettings settings;private volatile ResourceLoader resourceLoader;Overridepublic void afterPropertiesSet() throws Exception {// 初始化后就执行逻辑了initializeDatabase();}/*** Initializes the database by applying schema and data scripts.* return {code true} if one or more scripts were applied to the database, otherwise* {code false}*/public boolean initializeDatabase() {ScriptLocationResolver locationResolver new ScriptLocationResolver(this.resourceLoader);// 先后执行 schema, data 的脚本boolean initialized applySchemaScripts(locationResolver);return applyDataScripts(locationResolver) || initialized;}// 真正执行脚本前会走这个判断决定是否要执行脚本private boolean isEnabled() {if (this.settings.getMode() DatabaseInitializationMode.NEVER) {return false;}return this.settings.getMode() DatabaseInitializationMode.ALWAYS || isEmbeddedDatabase();}/*** Returns whether the database that is to be initialized is embedded.* return {code true} if the database is embedded, otherwise {code false}* since 2.5.1*/protected boolean isEmbeddedDatabase() {throw new IllegalStateException(Database initialization mode is this.settings.getMode() and database type is unknown);}private boolean applySchemaScripts(ScriptLocationResolver locationResolver) {return applyScripts(this.settings.getSchemaLocations(), schema, locationResolver);}private boolean applyDataScripts(ScriptLocationResolver locationResolver) {return applyScripts(this.settings.getDataLocations(), data, locationResolver);}private boolean applyScripts(ListString locations, String type, ScriptLocationResolver locationResolver) {ListResource scripts getScripts(locations, type, locationResolver);if (!scripts.isEmpty() isEnabled()) {runScripts(scripts);return true;}return false;}// 根据配置的 路径的字符串 - spring.Resource 类型private ListResource getScripts(ListString locations, String type, ScriptLocationResolver locationResolver) {if (CollectionUtils.isEmpty(locations)) {return Collections.emptyList();}ListResource resources new ArrayList();for (String location : locations) {for (Resource resource : doGetResources(location, locationResolver)) {if (resource.exists()) {resources.add(resource);}}}return resources;}private ListResource doGetResources(String location, ScriptLocationResolver locationResolver) {return locationResolver.resolve(location);}private void runScripts(ListResource resources) {runScripts(resources, this.settings.isContinueOnError(), this.settings.getSeparator(),this.settings.getEncoding());}protected abstract void runScripts(ListResource resources, boolean continueOnError, String separator,Charset encoding);private static class ScriptLocationResolver {private final ResourcePatternResolver resourcePatternResolver;private ListResource resolve(String location) throws IOException {// ...}}}再看几个它的实现类加载上配置类基本上可以知道它的使用方法了 2. 吾のDemo 始于测试类 package org.pajamas.spring.boot;import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.pajamas.example.starter.core.entity.AlbumEntity; import org.pajamas.example.starter.core.repo.AlbumRepo; import org.pajamas.example.test.AbstractApplicationTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Import; import org.springframework.test.context.TestPropertySource;import java.util.List;/*** author william* since 2024/5/30*/ DisplayName(what the interesting component) TestPropertySource(properties {spring.application.nameservice-example-test,// 屏蔽 liquibase 的干扰 spring.liquibase.enabledfalse }) Import(ExampleDatabaseInitializer.class) public class DatabaseInitializerTest extends AbstractApplicationTest {// 其实就一个 jpa 实体类的 repositoryAutowiredAlbumRepo repo;// DisabledDisplayName(execute DDL, DML automatically, as App startup)Testpublic void t0() throws Exception {// 预期的结果启动启动时自动创建表并插入一条记录ListAlbumEntity all this.repo.findAll();printErr(all);} }既然是测试就走简单的方式注册这个bean package org.pajamas.spring.boot;import org.springframework.boot.autoconfigure.sql.init.SqlDataSourceScriptDatabaseInitializer; import org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties; import org.springframework.boot.sql.init.DatabaseInitializationMode;import java.util.Collections;import javax.sql.DataSource;/*** author william* since 2024/5/30*/ public class ExampleDatabaseInitializer extends SqlDataSourceScriptDatabaseInitializer {public ExampleDatabaseInitializer(DataSource dataSource) {super(dataSource, getProperty());}private static SqlInitializationProperties getProperty() {SqlInitializationProperties properties new SqlInitializationProperties();properties.setSchemaLocations(Collections.singletonList(classpath:sql/schema.sql));properties.setDataLocations(Collections.singletonList(classpath:sql/data.sql));properties.setMode(DatabaseInitializationMode.ALWAYS);properties.setContinueOnError(false);return properties;} }schema.sql CREATE TABLE IF NOT EXISTS t_album (id bigint NOT NULL AUTO_INCREMENT,album_name varchar(32) DEFAULT NULL COMMENT album name,album_year int DEFAULT NULL COMMENT album publish year,create_date timestamp NULL DEFAULT NULL,create_user_id bigint DEFAULT NULL,update_date timestamp NULL DEFAULT NULL,update_user_id bigint DEFAULT NULL,ver int NOT NULL DEFAULT 0,del bigint NOT NULL DEFAULT 0,PRIMARY KEY (id),UNIQUE KEY uni_album_id_del (id,del) ) COMMENTalbum table;CREATE TABLE IF NOT EXISTS t_artist (id bigint NOT NULL AUTO_INCREMENT,artist_name varchar(32) DEFAULT NULL COMMENT artist name,artist_from varchar(32) DEFAULT NULL COMMENT shorten of country name,create_date timestamp NULL DEFAULT NULL,create_user_id bigint DEFAULT NULL,update_date timestamp NULL DEFAULT NULL,update_user_id bigint DEFAULT NULL,ver int NOT NULL DEFAULT 0,del bigint NOT NULL DEFAULT 0,PRIMARY KEY (id),UNIQUE KEY uni_artist_id_del (id,del) ) COMMENTartist table;data.sql insert intot_album (album_name,album_year,create_user_id,update_user_id ) values (Boomerang,2023,1023,1023 );3. 话说回来为甚么我的h2没有自动创建quartz的schema 这是springboot.Quartz的实现 接下来源码启动… package org.springframework.boot.jdbc.init;/*** {link InitializingBean} that performs {link DataSource} initialization using schema* (DDL) and data (DML) scripts.** author Andy Wilkinson* since 2.5.0*/ public class DataSourceScriptDatabaseInitializer extends AbstractScriptDatabaseInitializer {Overrideprotected boolean isEmbeddedDatabase() {try {// step into ..return EmbeddedDatabaseConnection.isEmbedded(this.dataSource);}catch (Exception ex) {logger.debug(Could not determine if datasource is embedded, ex);return false;}} }----------// org.springframework.boot.jdbc.EmbeddedDatabaseConnection/*** Convenience method to determine if a given data source represents an embedded* database type.* param dataSource the data source to interrogate* return true if the data source is one of the embedded types*/public static boolean isEmbedded(DataSource dataSource) {try {return new JdbcTemplate(dataSource)// step into ....execute(new IsEmbedded());}catch (DataAccessException ex) {// Could not connect, which means its not embeddedreturn false;}}----------// org.springframework.boot.jdbc.EmbeddedDatabaseConnection.IsEmbeddedOverridepublic Boolean doInConnection(Connection connection) throws SQLException, DataAccessException {DatabaseMetaData metaData connection.getMetaData();String productName metaData.getDatabaseProductName();if (productName null) {return false;}productName productName.toUpperCase(Locale.ENGLISH);// step into ...EmbeddedDatabaseConnection[] candidates EmbeddedDatabaseConnection.values();for (EmbeddedDatabaseConnection candidate : candidates) {if (candidate ! NONE productName.contains(candidate.getType().name())) {// 根据jdbc.url判断是不是一个 嵌入式数据库String url metaData.getURL();return (url null || candidate.isEmbeddedUrl(url));}}return false;}------------public enum EmbeddedDatabaseConnection {// H2 判断是否为嵌入式数据的依据/*** H2 Database Connection.*/H2(EmbeddedDatabaseType.H2, DatabaseDriver.H2.getDriverClassName(),jdbc:h2:mem:%s;DB_CLOSE_DELAY-1;DB_CLOSE_ON_EXITFALSE, (url) - url.contains(:h2:mem)),}破案我的h2 使用默认的 file(xxx.mv.db) 存储默认配置下(DatabaseInitializationMode.EMBEDDED), 只有内存嵌入式的数据库会开启这个特性。 要么配置 DatabaseInitializationMode.ALWAYS要么使用内存数据库 Anyway, h2支持好多种连接方式新版本h2, 默认的file模式采用mv的storeEngine 支持MVCC。所以说对于quartz这种依赖行锁的要求也是支持的。 4. 话又说回去… 这个东西对项目的意义是什么 可以试下这个如果你有一个连接数据库的测试环境或者你的程序很简单又或者 有特殊的xp内存数据库专门数据库的版本控制工具你的程序比较复杂或者 本身就需要数据库的版本控制工具如 Liquibase运行在严肃的生产环境
http://www.hkea.cn/news/14594437/

相关文章:

  • 深圳建网站哪个济南兴田德润有活动吗58网站建设58xiamen
  • ui设计师怎么做自己的网站苏州住建
  • 如何看网站的流量网站建设要学哪些
  • 999网站免费工信部信息备案网站查询系统
  • 印度域名注册网站网络品牌策划
  • 网站建设与优化推广方案如何建企业网站
  • 百度网站建设微信封面wordpress 审核用户
  • dede5.7微电影网站模板铁路最好的5个专业学校
  • 企业网络推广网站建设广东哪家网站建
  • 二手房中介网站模板wordpress屏蔽f12
  • 常见的域名注册网站溧阳网站设计
  • 福建省效能建设网站前端培训学校
  • 网站建设的意义和作用企业网盘哪个最好用
  • vps 上传网站广告传媒公司名字
  • 大连建设工程信息网下载中心酒泉网站建设优化
  • 做网站业务的怎么寻找客户网站开发适配
  • 网站建设平台软件企业vi设计图片
  • 武功网站开发php网站开发设计论文
  • 电商网站详细设计网站建设 制作教程
  • 地方网站的建设北京工程信息网
  • 做外贸最好的网站有哪些深圳网站设计x
  • 旅游酒店网站建设域名一定要备案吗
  • 网站开发管理制度wordpress百度xml地图
  • 网站每年续费费用个人简历免费制作网站
  • 网站建设为什么要全款如何做好网站建设的要点
  • 网站建设公司小江龙岩天宫山天气预报
  • 做美工要开通什么网站的会员呢女性logo大全图片
  • 钓鱼网站的危害梅县区住房和城市建设局网站
  • 网站域名过期2022最近比较火的热点话题
  • hugo 怎么做网站网站设计中国内优秀企业网站欣赏