一.业务开发中的各类注解
1.lombok包下的实体类注解包括@Data,@AllArgsConstructor,@NoArgsConstructor,提供了get,set,toString,全参构造和无参构造的方法。
2.javax.persistence下的@entity,@Table,@column,@id,@GeneratedValue等直接完成了实体类到数据库表的映射,可以省去书写*.hbm.xml文件的步骤。
3.@service,@controller,@repository,@Component,@autowired等是spring中为三层注释,其操作省略了在spring容器中书写接口实现的步骤和注入的过程。需要在配置文件中书写<context:component-scan/>自动检测指定包下的需要自动注入的bean
4.jpa规范的注解,org.springframework.data.jpa.repository包下,@querry,@modifying。快速完成dao层书写,省略了dao层实现类的书写。@modifying注解需要更改数据库的方法,在spring boot中需要在service层加入@Transactional注解事务,并在启动类中注解@EnableTransactionManagement开启事务注解扫描。
5.接口测试类注解,io.swagger.annotations包下的@API,@ApiOperation,@ApiParam等注解是引入接口框架swagger后,方便前端理解并对接已经写好的接口的注解,省去了接口文档的书写,将接口的目的信息,参数信息等写在具体的实现类中,统一的进行了接口规范管理。
6.controller层的各种注解,@ResponseBody,@RequestMapping,@RequestBody,@RequestParam。@ResponseBody声明将返回数据包装成json,并且返回值不会通过视图解析去找对应页面。@RequestMapping中的value的值是指定访问到当前方法的请求的映射。@RequestBody只能处理post请求,@RequestParam可以处理post和get请求。
二.业务开发中entity,vo,dto类区别与联系
1.entity类是与数据库完成映射的实体类,dao层通过操作entity完成对数据库的操作,是持久化操作的重要载体。
2.vo类是前端与后端对接过程中的重要类,将前端所需要的数据通过查询统一包装到这个类中,以方便前端获取相关信息,以及管理杂乱的数据信息。
3.dto类与vo类的作用相似,但是略有不同。前端与后端交互的vo类通过dto类进行统一的管理。
各个类的区别详:https://blog.csdn.net/zjrbiancheng/article/details/6253232
三.websocket编程
1.注解式开发(tomcat自带的包)
@ServerEndpoint,@OnOpen,@OnMessage,@OnError,@OnClose注解分别是指定websocket请求端点,以及监听websocket的前端发来的连接,通信,异常,关闭请求,然后根据请求进行处理。相关api见:https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket
2.编程式开发(使用spring-websocket包)
第一步:写一个继承HttpSessionHandshakeInterceptor类的拦截器,websocket的连接请求拦截下来。
public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor{ @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception { return super.beforeHandshake(request, response, wsHandler, attributes); } @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex) { super.afterHandshake(request, response, wsHandler, ex); } } |
第二步,写一个继承TextWebSocketHandler类的 的类,重写监听器。
public class WebsocketEndPoint extends TextWebSocketHandler { @Override @Override } |
第三步,写一个继承WebSocketConfigurer的类注册拦截器和拦截地址
public class WebsocketConfig implements WebSocketConfigurer { @Override } |
第四步,在springMVC配置文件中,将监听类通过切面编程注入到拦截器类中
<bean id="endPoint" class="com.tz.socket.WebsocketEndPoint"/> <websocket:handlers> <websocket:mapping path="/webSocket" handler="endPoint" /> <websocket:handshake-interceptors> <bean class="com.tz.socket.HandshakeInterceptor" /> </websocket:handshake-interceptors> </websocket:handlers> |
如果在springMVC配置了登录拦截的,需要设置过滤掉相关uri。
<mvc:exclude-mapping path="/webSocket"/> |
以上两种方式都可以完成简单的websocket编程,然后可以在前端通过 ws://url/websocket 进行websocket通信
四.总结
人生第一份正式的工作,经过两个月的工作和学习终于能很好的上手项目了。后面的路道阻且长,相信只要坚持下去应该就会有应得的回报。