自学springboot的第一天
one 常用注解
- @SuppressWarnings(“unchecked”)
被批注的代码元素内部的某些警告保持静默 - @CrossOrigin解决跨域问题
- @RestController
如果只是使用@RestController注解Controller,则Controller中 的方法无法返回jsp页面,或者html,
配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。 - @RestController
注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前
面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面 - @RequestMapping("/home")
- @RequestMapping(value= “/name”)
String getName(@RequestParam(value = “person”, required = false) String personName)
,因为 required 被指定为 false,所以 getName() 处理方法对于如下两个 URL 都会进行处理:
/home/name?person=xyz
/home/name - @SuppressWarnings(“unchecked”)被批注的代码元素内部的某些警告保持静默
- @CrossOrigin解决跨域问题
- @RestController
- 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,
配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。 - 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
- @RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前
面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面 - @RequestMapping("/home")
- @RequestMapping(value= “/name”)
String getName(@RequestParam(value = “person”, required = false) String personName)
,因为 required 被指定为 false,所以 getName() 处理方法对于如下两个 URL 都会进行处理:
/home/name?person=xyz
/home/name
two 自己搭个hello项目
方法一:
-
上这个网站 https://start.spring.io/
-
spring boot的项目嘛当然要选maven project
-
with 同理我学的Java当然选Java
-
第三个空选择springboot版本,目前我用的是1.5.18的(应该是可以范围内最老版本了把,当然springboot 2.*能力更加强大,之后会逐步的去学)
-
Artifact是项目的名称,group+artifact会形成项目入口的目录
-
Dependencies依赖作为未来大佬依赖一般都是自己写的(版本要选最适合自己的,自己写的依赖比较放心),一般是空着直接down下来
-
解压,导入eclipse(基于maven项目进行导入)
-
maven-update project
结果: -
看到目录结构当然要了解每个目录的作用
1)src/main/java 这个目录 是放代码的(百度来的答案-差评)代码可太多了,目前我看,基本Java写的代码都要放这里。
2)src/main/resources 这个目录是放资源的(百度来的)什么是资源呢,目前来看,一些配置文件,静态资源等等不用Java写的基本都放这里。
3)src/test/java 这个目录是放测试文件的,做单元测试的地方,很重要
4)pom.xml 这不是目录,是写依赖的地方。都能看懂,个人认为这里是项目的半个核心把,这个设计好了做项目事倍功半,要是没设计好0.0. -
spring boot内嵌了tomcat只需要写个controller就可以跑起来很神奇
-
最基本的依赖
org.springframework.boot
spring-boot-starter
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
spring-boot-starter这个依赖包含了核心模块,包括自动配置支持、日志和YAML
spring-boot-starter-test这个依赖包含了测试模块,包括JUnit、Hamcrest、Mockito
spring-boot-starter-web更简单了整合了所以web项目默认使用的东西 -
写一个史上最简单的controller
@RestController
public class HelloController {
@RequestMapping("/hello")
public String index() {
return “Hello”;
}
}
*注解上面都有所以先看常用注解的好处就体现了出来 -
运行下面的文件
@SpringBootApplication
public class CompanyWyfApplication {public static void main(String[] args) {
SpringApplication.run(CompanyWyfApplication.class, args);
}
}
别犹豫直接右键run-Java application就可以了
@SpringBootApplication带有这个注解的就是程序的入口了 -
ok运行成功
15.测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class CompanyWyfApplicationTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
// 初始化
mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
@Test
public void hello() throws Exception {
String url = “/hello”;
String expectedResult = “Hello”;
MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(url).accept(MediaType.APPLICATION_JSON))
.andReturn();int status = mvcResult.getResponse().getStatus();
String content = mvcResult.getResponse().getContentAsString();
Assert.assertTrue(“错误”, status == 200);
Assert.assertFalse(“错误”, status != 200);
Assert.assertTrue(“数据一致”, expectedResult.equals(content));
}
}
格式不会搞,难受。。。
run-junit运行搞定
在这里我遇到一个坑爹的坑
由于我比较手贱改了CompanyWyfApplication的包名,然后程序测试时候一直报错报错,苦思冥想最后包名一致程序通过。