Spring小节
基本注解
1、@Controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
2、@Service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
3、@Repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
4、@Component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
)
区别
web : 数据库设计 => 数据库的操作dao => Servlet层url以及操作
Spring: 数据库设计 => 数据库操作dao => Service层对应操作 => controller 接受前端数据进行反序列化 然后调用service层代码对数据处理,然后序列化要返回的数据。
小节注释
- @SpringBootApplication 启动类的注解
- @Service 注解 一般是用来操控数据库的
- @Repository 注解 在bean容器中会自动new一个这样的类
- @Autowired 注解 表明我要使用这个类,在bean容器中查找这个类
- @RestController 注解 用于标记这个类是一个控制器,返回JSON数据的时候使⽤,如果使用这个注解,则接⼝口返回数据会被序列列化为JSON 。
- @Controller 注解:用于标记这个类是⼀一个控制器,返回页⾯面的时候使用;如果要返回JSON,则需要在接口上使用@ResponseBody才可以。
Controller和 ResController的区别
- 相同 :Spring中的某个类来接受http请求
- 不同: @RestController是@Controller和@ResponseBody的结合体 ;使用@Controller 注解,视图解析器可以解析到return中的jsp页面或者html页面,并且跳转到相应页面,返回json等内容到页面,则需要加@ResponseBody; 使用@RestController返回的内容就是return中的内容,会自动解析成字符串,是无法返回jsp页面或者html页面。
- @RequestMapping 注解:访问路径
- @GetMapping 注解:路径和方法GET
- @Configuration 注解 :表明是配置类
- @PropertySource(value = “classpath:pay.properties”) 获取配置文件
- @JsonIgnore 注解 指定字段不返回,也无法接受前端的相应的传回来的参数
单元测试中的注解
- @RunWith(SpringRunner.class) 注解 表明做Spring项目的单元测试 //底层用junit SpringJUnit4ClassRunner
- @SpringBootTest(classes={DemoProjectSpringApplication.class}) 注解 classes后跟的是启动类
- @before 一般做测试数据的初始化
- @Test 做测试 断言测试 我们单元测试一般只用这个
- @After 一般做资源的回收
- @AutoConfigureMockMvc 类注解 注⼊入⼀一个MockMvc类 相当于一个客户端 可以发起请求和接受响应,perform andExpect andReturn三种方法结合使用
/**
* perform执⾏行行⼀一个RequestBuilder请求
* andExpect:添加ResultMatcher->MockMvcResultMatchers验证规则
* andReturn:最后返回相应的MvcResult->Response
* */
/**
* perform 获取http请求
* MockMvcRequestBuilders是一个构建器 构建多种http请求
* 支持链式调用
* .andExpect 看预期结果
* MockMvcResultMatchers.status 结果的状态码
* isOK 状态码 200
* andReturn 返回结果
* */
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/api/v1/pub/video/list/") .andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
异常处理的注解
- 类添加注解
@ControllerAdvice,可以用来返回一个页面,但需要配合ModeAndView类来使用。
@RestControllerAdvice, 默认返回json数据,方法不需要加@ResponseBody。 - 方法添加注解
捕获全局异常,处理所有不可知的异常 value 后面跟得是异常类得信息
@ExceptionHandler(value=Exception.class)