1. 對 Spring 的版本變更不清楚
2. 對 Spring 和 J2EE 規範的關系不清楚
3. 對 Spring 那堆配置和註解背後的原理不清楚
妳可能知道 DI 是個什麽概念,但妳可能不知道 DI 的正確使用方式:
1. 妳也許不知道 Spring 有自己的測試體系,我們可以直接使用
2. Spring 的事務管理優越在哪裏,和 Hibernate 自己的事務管理有啥區別,怎麽配置才對。
3. Spring 為啥提倡非侵入式(non-invasive)設計,又是從哪個版本開始這麽幹的,起因是什麽
4. Spring 那些註解的使用原理和適用場景是什麽,哪些是Spring 自己的註解,哪些是 J2EE DI 的標準註解,使用哪個好,為什麽好。
...........
上述的壹切,當妳把 Spring 官方提供的 Spring Reference 看的差不多了,也就明白了,大概 500 多頁吧。
Spring 越來越大,衍生出其他的分支項目,雖然臃腫,但如果妳知道如何篩選自己想要的功能,就不會臃腫,反而會很簡潔,例如:
1. 妳想實現 Rest 服務,那麽 Spring MVC 就預置了這個功能,妳沒必要再去使用 CXF / Restlet 之類的 Rest 框架,還得忙著想怎麽和 Spring 整合,這樣,Struts 就出局了,Rest 框架也省了。
2. 妳想實現權限功能,那麽 Spring Security 可以替妳搞定,妳沒必要使用 Apache Shiro 來做,也沒必要苦逼地自己設計,而且人家還原生支持 OAuth 和 SAML
3. 妳不想苦逼地寫 DAO, 那麽 Spring Data 可以替妳做,這些 boilerplate code 全部替妳實現了,而且對 JPA 或 NO-SQL 的支持也是相當方便。
4. 妳想根據自己的需求生成代碼,而不是苦逼地自己來寫,可以試試 Spring Boot
...........
其他的,還有很多很多,妳只需要記住,是不是臃腫,很大程度上是由妳的認知和使用能力決定的,不是框架本身,具體如何學習這個優秀的框架,建議:
1. 視頻教程點到為止,不可全信
2. 網上文章看看即可,別拷過來自己完事
3. 有問題,先去查看 Spring Reference, 多看原理。