首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,649 阅读
2
Mac打印机设置黑白打印
5,043 阅读
3
修改elementUI中el-table树形结构图标
4,946 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,705 阅读
5
intelliJ Idea 2022.2.X破解
4,456 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Mac
Spring Cloud
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
MySQL
.Net
Spring Cloud Alibaba
Mybatis-Plus
Typecho
jQuery
Java Script
IntelliJ IDEA
微信小程序
Laughing
累计撰写
629
篇文章
累计收到
1,421
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
629
篇与
的结果
2020-09-27
Mac配置环境变量每次都要执行source ~/.bash_profile才生效
问题再现在 ~/.bash_profile 中配置环境变量, 每次重启终端后配置的环境变量不生效。需要重新执行 :$source ~/.bash_profile问题分析出现这个问题是因为zsh加载的是~/.zshrc文件,而.zshrc文件中并没有定义环境变量。解决办法在~/.zshrc文件最后,增加一行:source ~/.bash_profile执行source ~/.zshrc
2020年09月27日
1,522 阅读
0 评论
0 点赞
2020-09-27
SpringBoot 之 @ControllerAdvice使用场景
SpringBoot 之 @ControllerAdvice使用场景@ControllerAdvice是spring 3.2版本增加的一个注解,@ControllerAdvice注解的类,可以应用到所有的@RequestMapping请求中,主要有三个应用场景:@ExceptionHandler 全局异常处理@InitBinder 全局数据预处理@ModelAttribute 全局数据绑定注意如果这三个注解直接在@Controller类中使用,则只对当前控制器生效如果@ControllerAdvice中不需要返回view,也可以使用@RestControllerAdvice,即@RestControllerAdvice = @ControllerAdvice + @ResponseBody@ExceptionHandler 全局异常处理定义全局异常处理类/** * 全局异常处理 * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @RestControllerAdvice public class GlobalExceptionHandler { /** * 处理越界异常 * @param indexOutOfBoundsException 越界异常 * @return Map */ @ExceptionHandler(IndexOutOfBoundsException.class) public Map<String,Object> indexOutOfBoundsException(IndexOutOfBoundsException indexOutOfBoundsException){ Map<String,Object> map = new HashMap<>(2); map.put("code",400); map.put("msg","越界异常"); return map; } /** * 处理空引用异常 * @param nullPointerException 空引用 * @return Map */ @ExceptionHandler(NullPointerException.class) public Map<String,Object> nullPointerException(NullPointerException nullPointerException){ Map<String,Object> map = new HashMap<>(2); map.put("code",400); map.put("msg","空引用异常"); return map; } }@RestControllerAdvice注解到类上,@ExceptionHandler注解到具体的异常上,只有@ExceptionHandler注解的异常,才会进行处理,如上,系统只会处理IndexOutOfBoundsException以及NullPointerException异常,其他异常均不进行处理。使用/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @RestController public class TestGlobalExceptionController { /** * 测试越界异常 * * @return String */ @RequestMapping("/testIndexOutOfBoundsException") public String testIndexOutOfBoundsException() { String[] names = {"张三"}; return names[2]; } /** * 测试空引用异常 * * @return String */ @RequestMapping("/testNullPointerException") public String testNullPointerException() { String firstName = null; String lastName = "laughing"; return firstName.toLowerCase() + lastName; } /** * 这个异常不会被处理 * * @return String */ @RequestMapping("/exception") public String testException() throws Exception { throw new Exception("这个异常不会被处理"); } }我们分别进行请求测试@InitBinder 全局数据预处理全局数据预处理可以在@RequestMapping方法前,先对数据进行处理,然后在进入@RequestMapping方法。定义全局数据预处理类/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @RestControllerAdvice public class GlobalDataBinder { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { @Override public void setAsText(String text) { Date date = null; try { if (text != null) { date = DateUtils.addDays(DateUtils.parseDate(text,"yyyy-MM-dd"),1); } } catch (ParseException e) { } setValue(date); } }); } }使用 @ModelAttribute @RequestMapping("/testGlobalDataBinderController") public Person testGlobalDataBinderController(@RequestParam("name") String name, @RequestParam("birthday")Date birthday){ Person person = new Person(); person.setBirthday(birthday); person.setName(name); return person; } @ModelAttribute @RequestMapping("/testGlobalDataBinderControllerBody") public Person testGlobalDataBinderControllerBody(@RequestBody Person person){ return person; } }我们通过postman测试,可以发现日期已经自动加了一天@ModelAttribute 全局数据绑定全局数据绑定功能可以用来做一些初始化的数据操作,我们可以将一些公共的数据定义在添加了 @ControllerAdvice注解的类中,这样,在每一个 Controller 的接口中,就都能够访问导致这些数据。定义全局数据绑定/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @RestController public class TestGlobalDataAttributeController { /** * 全局数据绑定 * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @RestControllerAdvice public class GlobalDataAttribute { @ModelAttribute(name = "person") public Map<String,Object> modelAttribute(){ Map<String,Object> map = new HashMap<>(); map.put("name","张三"); return map; } }使用全局数据绑定/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @RestController public class TestGlobalDataAttributeController { /** * 测试 * @param person 绑定模型 * @return 绑定数据 */ @RequestMapping("/testGlobalDataAttribute") public Map<String, Object> testDataBinder(@ModelAttribute("person") Map<String, Object> person) { return person; } }
2020年09月27日
1,286 阅读
0 评论
0 点赞
2020-09-27
Spring Boot条件注解
什么是条件注解@Conditional 根据满足某一个特定条件创建一个特定的 Bean。就是根据特定条件来控制 Bean 的创建行为,这样我们可以利用这个特性进行一些自动的配置。Spring boot 中大量用到了条件注解简单实践以不同的操作系统作为条件,我们将通过实现 CommandCondition 接口,并重写其 matches() 方法来构造判断条件。若在 Windows 系统下运行程序,则输出列表命令为 dir ,若在 Linux 系统或者Mac下运行程序,则输出列表命令为 ls创建工程这里我们只创建简单的maven工程,而不是spring boot工程。打开idea,选择创建工程。向导界面,选择Maven→勾选create from archetype,选择org.apache.maven.archetypes:maven-archetype-quickstart输入工程信息设置maven引入依赖打开pom.xml文件,增加spring依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.9.RELEASE</version> </dependency>定义接口/** * 定义接口 * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public interface CommandCondition { /** * 获取命令 * @return win返回dir,linux及mac返回ls */ public String getCommand(); }定义接口实现类定义三个接口实现类,分别继承CommandCondition接口/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public class MacCommand implements CommandCondition{ /** * 获取命令 * * @return win返回dir,linux及mac返回ls */ @Override public String getCommand() { return "ls"; } }/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public class LinuxCommand implements CommandCondition{ /** * 获取命令 * * @return win返回dir,linux及mac返回ls */ @Override public String getCommand() { return "ls"; } }/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public class WindowsCommand implements CommandCondition{ /** * 获取命令 * * @return win返回dir,linux及mac返回ls */ @Override public String getCommand() { return "dir"; } }定义条件类定义三个条件类,分别实现matches() 方法,用来构造判断条件/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public class LinuxCommandContidion implements Condition { @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { return Objects.requireNonNull(conditionContext.getEnvironment().getProperty("os.name")).contains("Linux"); } }/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public class MacCommandContidion implements Condition { @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { return Objects.requireNonNull(conditionContext.getEnvironment().getProperty("os.name")).contains("Mac"); } }/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public class WindowsCommandContidion implements Condition { @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { return Objects.requireNonNull(conditionContext.getEnvironment().getProperty("os.name")).contains("Windows"); } }定义配置类定义配置类,注入根据条件注入Bean/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @Configuration public class CommandConfig { @Bean @Conditional(LinuxCommandContidion.class) public CommandCondition linuxCommand(){ return new LinuxCommand(); } @Bean @Conditional(MacCommandContidion.class) public CommandCondition macCommand(){ return new MacCommand(); } @Bean @Conditional(WindowsCommandContidion.class) public CommandCondition windowsCommand(){ return new WindowsCommand(); } }使用在main函数中,创建一个 AnnotationConfigApplicationContext 实例用来加载 Java 配置类,并注册我们的配置类,然后刷新容器。容器刷新完成后,我们就可以从容器中去获取 CommandCondition 的实例了,这个实例会根据操作系统不同,返回不同的命令。/** * Hello world! */ public class App { public static void main(String[] args) { AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(); annotationConfigApplicationContext.register(CommandConfig.class); annotationConfigApplicationContext.refresh(); CommandCondition commandCondition = annotationConfigApplicationContext.getBean(CommandCondition.class); String command = commandCondition.getCommand(); System.out.println(command); } }测试通过java -jar命令在不同操作系统分别运行jar包,查看输出java -jar conditional-1.0-SNAPSHOT-jar-with-dependencies.jar生成jar包运行说明jar包无法运行默认情况下,直接生成的jar包是没有配置入口类并且不包含依赖的。所以会报以下错误解决我们需要在pom.xml中增加打包插件maven-assembly-plugin<!-- 打包方式:mvn package assembly:single --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.5</version> <configuration> <archive> <manifest> <mainClass>org.lisen.condition.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> </plugin>重新mvn install我们会得到两个jar包,名称带-with-dependencies是包含依赖的,也是我们可以通过java -jar 命令运行的。参考资料条件注解,spring boot的基石
2020年09月27日
1,287 阅读
0 评论
0 点赞
2020-09-26
徒手撸一个Spring Boot Starter,学习自动化配置
what-are-spring-boot-starter-jars(spring boot中的starter是干啥的)Spring Boot Starter是在SpringBoot组件中被提出来的一种概念,stackoverflow上面已经有人概括了这个starter是什么东西,想看完整的回答戳这里下面摘抄一段Starter POMs are a set of convenient dependency descriptors that you can include in your application. You get a one-stop-shop for all the Spring and related technology that you need, without having to hunt through sample code and copy paste loads of dependency descriptors. For example, if you want to get started using Spring and JPA for database access, just include the spring-boot-starter-data-jpa dependency in your project, and you are good to go。扔到百度翻译里面翻译下:starter pom是一组方便的依赖描述符,可以包含在应用程序中。您可以获得所需的所有Spring和相关技术的一站式服务,而不必搜索示例代码和复制粘贴大量依赖描述符。例如,如果您想开始使用Spring和JPA进行数据库访问,只需在项目中包含springbootstarterdatajpa依赖项,就可以开始了。其实说白了,就是把一些重复的、机械的工作合成起来。如何自定义自己的starter其实starter也只是一个普通的maven工程,关于starter工程的命令,可以参考官方文档创建一个starter基本包含以下几个步骤:创建一个maven项目,关于项目的命名你可以参考考官方文档创建一个ConfigurationProperties用于保存你的配置信息增加starter实现类创建一个AutoConfiguration,引用定义好的配置信息把AutoConfiguration类加入spring.factories配置文件中进行声明打包项目并推送到maven仓库新建SpringBoot项目引入starter依赖并使用。下面的演示,我们创建一个starter,能够根据配置的url,打印并输出对应页面的内容,同时如果不传递参数,自动打印李森的博客https://lisen.cc的首页第一步创建工程并修改对应的xml文件创建工程后,需要修改对应的pom.xml文件,并增加依赖,具体修改内容如下:注意这里面的几个坑自定义的starter是不能有启动入口的!即:只能作为工具类!所以我们必须把启动类删除掉。否者,在依赖的工程里面无法引入类。需要把pom.xml的build节点全部删掉,不然无法install或者deploy。创建一个ConfigurationProperties用于保存你的配置信息先修改application.yaml文件,增加默认配置blog: url: https://lisen.cc增加配置类,并注入配置文件 /** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @ConfigurationProperties(prefix = "blog") public class BlogPropertes { private String url; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }增加starter实现类我的实现类只是简单的通过jsoup打印并返回一个html的内容。** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ public class PrintHtmlService { public void setUrl(String url) { this.url = url; } private String url; /** * 打印并返回html内容 * @return * @throws IOException */ public String print() throws IOException { Document document = Jsoup.parse(new URL(this.url), 300 * 1000); String htmlString = document.html(); System.out.println(htmlString); return htmlString; } }创建一个AutoConfiguration,引用定义好的配置信息/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @Configuration @EnableConfigurationProperties(BlogPropertes.class) @ConditionalOnClass(PrintHtmlService.class) public class AutoConfiguration { @Resource BlogPropertes blogPropertes; @Bean @ConditionalOnClass public PrintHtmlService printHtmlService(){ PrintHtmlService printHtmlService = new PrintHtmlService(); printHtmlService.setUrl(blogPropertes.getUrl()); return printHtmlService; } }@Configuration标识本类是配置类(相当于spring中application.xml)@EnableConfigurationProperties(AutoConfigruationProperties.class)如果AutoConfigruationProperties中有注解@ConfigurationProperties 那么这个类就会被加到spring上下文的容器中,也就是可以通过@Resource来注入@ConditionalOnClass当类路径下有指定类的情况下 才进行下一步@ConditionalOnMissingBean当spring容器中没有这个Bean的时候才进行下一步把AutoConfiguration类加入spring.factories配置文件中进行声明在resources文件夹增加META-INF在META-INF文件夹下增加spring.factories文件,并设置自动装配org.springframework.boot.autoconfigure.EnableAutoConfiguration = org.lisen.printhtmlstarter.config.AutoConfiguration打包项目并推送到maven仓库如果有maven私服,可以推送到远程仓库,我这里只是自己测试,所以直接install到自己本地仓库mvn package install新建SpringBoot项目引入starter依赖并使用我这里直接新建一个普通的web项目,加入pringt-html-starter依赖进行测试新建项目并加入依赖第一次我们先不重写默认的url新建一个测试类,代码如下:/** * @author laughing * @date 2020/9/26 * @site https://lisen.cc */ @RestController public class TestController { @Resource PrintHtmlService printHtmlService; @RequestMapping("/print") public String print() throws IOException { return printHtmlService.print(); } }通过测试,我们可以发现,正常输入了默认的https://lisen.cc的内容第二次我们修改配置文件,重写url为http://www.baidu.com修改配置文件如下,blog: url: https://www.baidu.com再次请求,我们发现,正常输出了百度的首页
2020年09月26日
1,120 阅读
0 评论
0 点赞
2020-09-26
Mac查看已安装的jdk版本以及目录
最近学习https,想着借助java自带的keytool配置一下springboot的htts,因为需要进入%java_home%/bin。查看java目录命令如下/usr/libexec/java_home -V
2020年09月26日
1,528 阅读
0 评论
1 点赞
2020-09-25
maven配置之pom.xml文件详细说明
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。典型的pom.xml文件结构<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 --> <modelVersion>4.0.0</modelVersion> <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade --> <groupId>com.winner.trade</groupId> <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> <artifactId>trade-core</artifactId> <!-- 本项目目前所处的版本号 --> <version>1.0.0-SNAPSHOT</version> <!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar --> <packaging>jar</packaging> <!-- 帮助定义构件输出的一些附属构件,附属构件与主构件对应,有时候需要加上classifier才能唯一的确定该构件 不能直接定义项目的classifer,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的 --> <classifier>...</classifier> <!-- 定义本项目的依赖关系 --> <dependencies> <!-- 每个dependency都对应这一个jar包 --> <dependency> <!--一般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入你的工程。如果别人想引用你现在开发的这个项目(前提是已开发完毕并发布到了远程仓库),--> <!--就需要在他的pom文件中新建一个dependency节点,将本项目的groupId、artifactId、version写入, maven就会把你上传的jar包下载到他的本地 --> <groupId>com.winner.trade</groupId> <artifactId>trade-test</artifactId> <version>1.0.0-SNAPSHOT</version> <!-- maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。 --> <!--scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围) --> <scope>test</scope> <!-- 设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似 --> <optional>false</optional> <!-- 屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 --> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} --> <properties> <file.encoding>UTF-8</file.encoding> <java.source.version>1.5</java.source.version> <java.target.version>1.5</java.target.version> </properties> ... </project>
2020年09月25日
1,297 阅读
0 评论
0 点赞
2020-09-25
李森的博客(香草物语)切换到typecho
2020年09月28日深知国内未备案域名寸步难行,加上.org域名现在无法备案,所以重新启用香草物语(https://lisen.cc)。最近将博客由wordpress切换到了typecho。简单聊一下切换的过程以及切换的原因吧。为什么要切换到typechowordpress对markdown语法兼用不是不好,原生不支持,插件问题也比较多。在工作中,好多东西都是markdown的,如果继续使用WordPress,势必会设涉及大量调整才能发布,而typecho只需些许修改即可以作为博文进行发布。WordPress过于臃肿,功能很强大,但是并不一定我都需要。typecho相对简洁,套个模板,轻松修改即可使用。也许审美疲劳吧,想换一下博客风格。2020.9.27,今天又发现一个优点,文件可以直接复制然后发布到头条号,格式不会乱。切换过程如果只是简单的迁移,其实还是很快的,而且typecho可以安装官方插件,实现WordPress数据库的迁移。下面简单说一下我的迁移过程:安装插件迁移数据库安装并启用Wordpress to Typecho插件配置数据库信息迁移数据迁移附件附件迁移是最简单的,typecho与WordPress附件存储路径基本一致把wp_content/uploads对应上传到usr/uploads。上传完附件后,批量更新typecho_contents表的附件路径。UPDATE typecho-contents SET text = replace( text, 'http://lisen.cc/wp-content/uploads', 'http://lisen.cc/usr/uploads' ) ;迁移文章细节其实整个迁移过程最麻烦的就是文章的迁移,特别是文章用了一些高亮插件。我在前移时,做了一个简单的springboot应用。可以协助迁移,但是效果也不是特别理想。如果有需要的,并且将代码放到了码云。git clone https://gitee.com/lisen0629/type-cho-h2m.git使用方式将代码克隆到本地。修改application.properties文件,修改对应的数据库信息。数据库文章表(默认为typecho_contents)增加一列markdown。运行程序,系统会自动将文章转成markdown格式,并存储到markdown列。迁移完成历时三天,终于将所有文章迁移并转换成markdown迁移过程中删除了一些质量不高的文章(一下子删除了接近一半的文章)
2020年09月25日
1,795 阅读
1 评论
2 点赞
2020-09-24
Spring Boot配置文件详解
关于配置文件springboot有两种格式的配置文件,即yaml和properties,两种配置文件在功能上完全等效。相对于 properties而言,yaml更加简洁明了,而且使用的场景也更多。除了简洁,yaml还有另外一个特点,就是yaml中的数据是有序的,properties 中的数据是无序的关于yaml以及properties详细使用方法,我们稍后开贴专门说明,这里不再赘述。配置文件加载顺序默认情况下,springboot应用会依次从以下位置加载配置文件:项目根目录下的config文件夹项目根目录resources目录下的config文件夹resources目录这四个是默认的位置,我们可以简单验证一下。在项目根目录下config文件夹下的application.yaml,设置端口为6666server: port: 6666启动项目,我们可以看到,默认端口已经是6666自定义配置文件位置除了上述的四个默认加载配置文件的位置,我们也可以自定义文件位置。通过pring.config.location 即可指定加载配置文件位置Idea调试时动态指定配置文件位置举个栗子,我在resources文件夹下面建立一个blog文件夹,并将 application.yaml 文件放到blog文件夹下,同时设置端口为6666加入创建配置文件,并按照如下设置修改Idea配置信息spring.config.location=classpath:/blog/一定要注意配置文件位置,最后的/不能少,否则会报错运行程序,我们会发现端口变成了 6666运行jar包是动态指定配置文件位置除了在Idea调试,我们终归要将程序发不成jar包,那么jar包如何加载配置文件呢?我们是以上面的程序进行说明,此时,我们将配置文件单独拿出来,同时将resource\blog文件夹删掉。并通过mvn package将程序打包成jar包,打包后的jar包名称为properties-0.0.1-SNAPSHOT.jar ,然后我们将jar包及application.yaml文件放到一起。我们通过java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location = ./运行程序,通过控制台,我们可以看到此时端口仍然是6666,证明已经加载我们的配置文件。自定义配置文件名自定义配置文件名的方式,与自定义配置文件的方式类似,同时两个命令可以一起使用。spring.config.name这里只展示一下用java -jar命令运行的方式,我把application.yaml文件改成blog.yaml,内容不变。java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location=./ --spring.config.name=blog可以看到,程序依然以6666端口成功启动。自定义配置文件加载顺序上面说了工程内的配置文件就自定义配置文件,如果自定义配置文件与默认配置文件同时存在,那么springboot如何加载呢。新建工程修改application.propertes端口号改成1234package打包工程使用java -jar 命令加载配置文件,并制定端口为4321我们看到,程序先加载了环境变量中的配置信息
2020年09月24日
1,286 阅读
1 评论
0 点赞
2020-08-22
uTools-让你效率倍增的快速启动软件
uTools 是一款极简、插件化、跨平台、现代化的桌面增强效率软件,它为用户提供了一个可以随时呼出的“看似简单”的输入框 (搜索框),但这个输入框却蕴含了近乎“无限”的能力。 除了快速启动程序外,我们日常工作中也会有各种各样的小需求,比如翻译一个单词、识别/生成二维码、查看颜色值、字符串编码/解码、图片压缩等等。uTools 将各种功能以插件形式聚合起来,变成你的专属小工具库,你只需敲入一个“快捷短语”,就能快速使用这些功能。
2020年08月22日
1,266 阅读
1 评论
0 点赞
2020-08-22
SpringBoot @Transactional声明事务无效问题
Spring之所以可以对开启@Transactional的方法进行事务管理,是因为Spring为当前类生成了一个代理类,然后在执行相关方法时,会判断这个方法有没有@Transactional注解,如果有的话,则会开启一个事务。但是,上面同一个类中A调用方式时,在调用B时,使用的并不是代理对象,从而导致this.B(i)时也不是代理对象,从而导致@Transactional失败。所以,Spring 从同一个类中的某个方法调用另一个有注解(@Transactional)的方法时,事务会失效,些事务的时候一定要注意到这一点。
2020年08月22日
1,091 阅读
0 评论
0 点赞
2020-04-15
最新 idea2020.1,最新激活教程有效期到2089年
idea 2020.1是由捷克IntelliJ公司而打造的一款Java集成开发环境,常常会被java工程师用于javabweb、大数据等场景的开发,是众多工程师们优先选择使用的开发工具。该软件界面美观,操作方便,拥有丰富的导航查看模式,用户通过快捷键即可显示最近打开过的文件和类名查找框,拥有强大的编码辅助功能,用户无需任何输入就可以实现代码的自动生成,还支持XML、JSP、EJB、EJB、JavaDoc预览、程序员意图等等,让你编码得心应手,加快敲代码的效率。当然,新版本的idea 2020.1与上个版本相比可是多了许多新特性,其中最大的特性当属于支持简体中文,用户安装完成后通过后续的补丁即可体验官方简体中文。除此之外,还新增了对Java 14的支持,用户现在可以使用全新的Java 14语法来编程,以及代码检查、LightEdit 模式、禅模式、数据流分析协助等十多项新功能,让你体验全新的编码方式。虽然该软件现已全新发售,但是对于很多初学的学生党来说支付不起,所以小编带来了idea 2020.1破解版,成功安装完软件之后,使用附带的破解补丁可以完美激活,详细的使用教程请看下方,小编亲测有效,有需要的朋友快来下载吧。获取破解文件链接: https://pan.baidu.com/s/1X4pH-6JfbbVQvIk5Lnqe-Q 提取码: 4s87将lib文件夹中的jetbrains-agent.jar拖动到软件内破解补丁安装完成,点击restart重启软件弹出激活方式,选择activation code后,点击为idea安装,然后再点击“是”,重启软件看下图到期时间2089年,以上就是IntelliJ IDEA2020.1破解版的安装教程
2020年04月15日
1,659 阅读
3 评论
0 点赞
2020-02-04
CentOS7 安装 dotnetsdk2.1.401的简单办法
下载 linux版本的tar包https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.1.401-linux-x64-binaries使用 类似于xftp的工具上传到一个路径.在当前目录下解压缩然后创建一个 环境变量vim /etc/profile.d/dotnetsdk.sh 增加一行内容export PATH=$PATH:/dotnetsdk使环境变量生效source /etc/profile.d/dotnetsdk.sh测试dotnet --info
2020年02月04日
1,232 阅读
0 评论
1 点赞
1
...
35
36
37
...
53