整理下最近OA系統和許可權系統書寫過程中的部分收穫
一.業務開發中的各類註解
1.lombok包下的實體類註解包括@Data,@AllArgsConstructor,@NoArgsConstructor,提供了get,set,toString,全參構造和無參構造的方法。
2.javax.persistence下的@entity,@Table,@column,@id,@GeneratedValue等直接完成了實體類到資料庫表的對映,可以省去書寫*.hbm.xml檔案的步驟。
[email protected],@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通訊
四.總結
人生第一份正式的工作,經過兩個月的工作和學習終於能很好的上手專案了。後面的路道阻且長,相信只要堅持下去應該就會有應得的回報。