Spring Boot提供的特性 - 张建斌 - 博客园
SpringBoot笔记一 - jsyxcjw的专栏 - CSDN博客
springboot日志输出到文件 - xiao雷博客 - CSDN博客
(4条消息)使用@SpringBootTest注解进行单元测试 - Google一下的专栏 - CSDN博客
(4条消息)Spring Boot Junit单元测试MockMvc使用(MockHttpServletRequestBuilder MvcResult ModelAndView json) - take that moeny - CSDN博客
SpringBoot学习心得体会
加载一个properties的配置文件,用spring boot只要加几个注解即可搞定,不用写一堆代码。
SpringBoot快速入门
SpringBoot学习-(一)如何在MyEclipse中创建SpringBoot项目
在浏览器输入:http://127.0.0.1:8080,浏览器返回404。SpringBoot就是这样,直接在MyEclipse里,右击run,它的tomcat的主页是无法访问的,只能访问项目。
我项目的根路径配置了一下:
所以浏览器里访问:http://127.0.0.1:8080/aaa/,就会有回调
访问一个接口:http://127.0.0.1:8080/aaa/hello,返回
SpringBoot官方文档学习
https://www.cnblogs.com/larryzeal/p/5799195.html
------mvn 运行或者打包springboot项目的jar包,java -jar执行jar包。mvn打包时的文件名是通过pom.xml里配置的。
1)SpringBoot学习:
http://www.cnblogs.com/larryzeal/p/5765945.html
***运行main方法可能会报错,改一下jre就好了:http://www.xwood.net/_site_domain_/_root/5870/5874/t_c273666.html
使用curl模拟网络请求:https://jingyan.baidu.com/article/e3c78d64897d303c4c85f52d.html
SpringBoot CLI安装:https://www.cnblogs.com/smile361/p/4710595.html
2)SpringBoot配置文件
https://www.cnblogs.com/shamo89/p/8178109.html (注意yaml和properties格式写法,yaml是层级写法,properties是java包名的写法)
https://blog.csdn.net/j080624/article/details/80508606 (默认配置文件路径及其优先级)
2-1>使用@value注解,加载配置文件可能有问题https://blog.csdn.net/fuck487/article/details/80362611,配置文件的路径和key都没有问题,但是项目还是启动不起来,有可能就是配置
文件的编码问题。
使用@value注解,有可能网页上访问是乱码。解决办法:https://blog.csdn.net/weixin_41987553/article/details/82958811?utm_source=blogxgwz0
(这个主要是配置文件里的value不能加引号,加上引号无论怎么设置文件编码格式都会乱码。)
看source视图:
可以发现中文被编码成unicode码了。
所以新建properties文件,如果有中文属性,最好使用ide来创建。
-------------------------
server.contextPath属性
表示项目的根路径,如果没有配置,访问项目首页默认为:http://ip:port/,假如server.contextPath为xxx,那么访问项目首页默认为http://ip:port/xxx,但是在controller里
"/"映射的还是首页
2-2>建立resources文件夹时,使用ide建立,不要在目录里手动建立,否则MyEclipse无法正常识别。也有可能会造成乱码。
2-3>使用@PropertySource将bean与配置文件绑定
第1步:建立属性文件
第2步:编写bean文件
绑定属性文件和属性前缀
@Component @ConfigurationProperties(prefix = "connection") @PropertySource(value = {"classpath:connection.properties"}) public class ConnectionSettings { private String username; private String remoteAddress; private String password ; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getRemoteAddress() { return remoteAddress; } public void setRemoteAddress(String remoteAddress) { this.remoteAddress = remoteAddress; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "ConnectionSettings [username=" + username + ", remoteAddress=" + remoteAddress + ", password=" + password + "]"; } }
第3步:引用bean文件
----》bean使用@Autowired自动注入,无法直接new出来(???)。
----》注意bean与controller在一个目录下,否则会报异常:ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sampleController': Unsatisfied dependency expressed through field 'configBean': No qualifying bean of type [cn.larry.spring.bean.ConnectionSettings] found for dependency [cn.larry.spring.bean.ConnectionSettings]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [cn.larry.spring.bean.ConnectionSettings] found for dependency [cn.larry.spring.bean.ConnectionSettings]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)
异常原因是因为bean没有在controller的目录下 https://blog.csdn.net/zhangcc233/article/details/80898931 (???)
Mappen注解依赖地址:https://blog.csdn.net/qq_37496091/article/details/77975871
2-4>通过${}在.xml中引用.properties中的属性
https://blog.csdn.net/gghh2015/article/details/80443453
3)SpringBoot Banner定制
https://www.jb51.net/article/136062.htm
4) CommandLineRunner接口使用例子
用于程序启动有且仅有一次初始化的过程
https://www.cnblogs.com/chenpi/p/9696310.html
5) exitCode使用例子
用于程序销毁时使用
https://blog.csdn.net/gebitan505/article/details/70154019
6)利用Profile配置开发环境
https://blog.csdn.net/liujun03/article/details/82592929
7)日志管理
https://www.jianshu.com/p/59787a123b05
https://blog.csdn.net/lchq1995/article/details/80080642
logback-spring.xml详解:
https://www.cnblogs.com/lixuwu/p/5810912.html
logback-spring.xml示例文件:
https://blog.csdn.net/xu_san_duo/article/details/80364600
注意配置输出路径时,路径中的斜杠应为"/",而不是“\”,否则可能不识别。(\\ /二选一)
****如果logback-spring.xml中没有定义log.path属性,则会在工程目录下生成log.path_IS_UNDEFINED目录。
****在logback-spring.xml中,可以通过${}来应用application.properties中定义的日志相关的配置参数:
通过https://www.cnblogs.com/larryzeal/p/5799633.html,可以知道有一个映射表:
###############################################################################################################################
英文官方文档学习 https://spring.io/guides/gs/spring-boot/,原文理解翻译如下:
(说明:代码我就不粘贴过来了,仅仅翻译)
一.Create a simple web application
创建controller
@RestController:SpringMVC用来处理web请求
@RequestMapping:将网络请求映射到某个方法上
将application写好启动之后,通过访问项目主页网页就会显示
之所以返回纯文字而不是一个view是@RestController将@Controller 和@ResponseBody结合的结果。
二.Create an Application class
@SpringBootApplication:相当于@Configuration、@EnableAutoConfiguration、@EnableWebMvc、@ComponentScan的集合体
@ComponentScan:会扫描application所在的包下的各种组件、配置和服务。
使用SpringApplication.run()即可轻松启动项目,不需要web.xml或者其他的工作。
commandLineRunner方法结合@Bean,这个方法会在程序启动时执行。
三.Run the application
commandLineRunner方法结合@Bean,这个方法会在程序启动时执行。
使用curl 访问主页,注意最后要加/,否则命令行没有显示,但是浏览器可以显示。
四.Add Unit Tests(单元调试)
用curl 访问主页,注意最后要加/,否则命令行没有显示,但是浏览器可以显示
https://www.cnblogs.com/qlong8807/p/7121522.html (作为对官方示例的补充,官方导入了static方法却没有说明)
进行单元测试的时候可能会出现错误:java.lang.UnsupportedClassVersionError: javax/servlet/ServletContext : Unsupported major.minor version 51.0
----》解决办法:https://blog.csdn.net/yufang131/article/details/80249800
但是将JDK升到1.8,项目又会出现问题:https://blog.csdn.net/qq_26718271/article/details/76623974
所以把编译器一起升级
MockMvc
https://www.cnblogs.com/0201zcr/p/5756642.html
https://blog.csdn.net/qq_16513911/article/details/83018027 (详细用法)
官方对MockMvc的解释:MockMvc来自于Spring Test,允许你通过一系列的创建者类向DispatcherServlet发送HTTP请求,对结果进行断言。通过使用@AutoConfigureMockMvc和
@SpringBootTest来注入一个MockMvc实例。使用@SpringBootTest会创建全局应用上下文
@SpringBootTest
使用@SpringBootTest注解可以运行环境,测试后台代码。
@RunWith(SpringRunner.class) @SpringBootTest(classes = StartUpApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class PlatsystemApplicationTests { }//其中,classes属性指定启动类,SpringBootTest.WebEnvironment.RANDOM_PORT经常和测试类中@LocalServerPort一起在注入属性时使用。会随机生成一个端口号。
@WebMvcTest(??)
SpringBoot会在任何情况下自动定位程序的主程序类
集成测试
随机端口(用于一台服务器上有多个服务程序需要启动时,避免端口冲突。)
https://my.oschina.net/zjllovecode/blog/1605981
当项目集成了测试依赖之后,使用mvn package打包时会出现异常:找不到junit相关包
解决办法:https://blog.csdn.net/nakiri_arisu/article/details/80325641
五.Add production-grade services
不知道为啥和官方文档不一样,不带actuator的地址 http://localhost:8080/aaa/health 可以正常访问
但是加了actuator就无法正常访问,应该是依赖的这个库的源码改了吧。
五.JAR support and Groovy support
创建app.groovy不一定要在springboot工程里创建,随便一个地方创建这个文件即可。然后run的时候,之前跑起来的springboot项目要先关闭。