{eval=Array;=+count(Array);}
就拿我們項目來舉例說一說吧。
我們的項目是一個純后臺服務的項目,也就是沒有前端頁面,只對外提供服務;項目是是基于 Spring Boot 來做的,引入 spring-boot-starter-web,直接對外暴露接口,報文使用的 JSON,有極個別的接口是從老系統(tǒng)遷移過來的,為了讓調(diào)用方盡可能地稍作修改,所以保持了 XML 的報文;在正式的生產(chǎn)環(huán)境中,也是使用的內(nèi)置的 Tomcat;集成了 Swagger,來做接口的文檔在線自動生成。
ORM 框架選擇的是 MyBatis,由于項目中大部分的查詢都做到了單表查詢,而且查詢條件比較固定,所以直接使用注解做的 SQL 語句綁定。
因為項目不僅使用了關系型數(shù)據(jù)庫,而更多的數(shù)據(jù)是加工關聯(lián)后保存到了 MongoDB 中,所以項目也用到了 Spring Data MongoDB,我們的 MongoDB 是做了副本集的部署,使用 Spring Data MongoDB,只需要做簡單的配置,就可以完成對多臺 MongoDB 的訪問,如果其中一臺 MongoDB 掛了,對服務也是沒有影響的,所以我們做 MongoDB 擴容的時候是可以在線做的(MongoDB 擴內(nèi)存和 CPU 的時候需要停機)。
和部分系統(tǒng)的交互使用到了 RabbitMQ,而 Spring Boot 只要引入 spring-boot-starter-amqp,其實就可以很方便地完成和 RabbitMQ 的集成;生產(chǎn)者和消費者都非常方便。
因為是純接口的服務,為了減輕數(shù)據(jù)庫的壓力,所以我們根據(jù)業(yè)務場景,將一些接口的結果直接緩存到 Redis 中(數(shù)據(jù)變化不頻繁,并且業(yè)務場景的實時性要求不是很高)。在集成 Redis 的時候,我們前后試了兩種方式:
Spring Boot 項目,直接使用 @Cacheable 注解就可以完成和 Redis 最簡單的集成,但是后來因為設置緩存的超時時間不夠靈活,我們后來改成了第二種方案;
使用 RedisTemplate,可以完成對 Redis 的絕大部分操作。
謝邀!根據(jù)你面試的職位等級不同,面試的內(nèi)容當然會不同。spring、springmvc、mybatis這三大基礎框架必須學和掌握,springboot、dubbo、springcloud、Spring家族其他套件、apache相關套件進階
Java框架一直以來都是面試必備的知識點,而掌握Java框架,不管在成熟的大公司,快速發(fā)展的公司,還是創(chuàng)業(yè)階段的公司,都能對當前正在開發(fā)中的系統(tǒng)有整體的認知,從而更好的熟悉和學習技術,這里我把常見的一些框架給您整理一下。
Spring框架,這個只要想從事java開發(fā)或正在從事java開發(fā)的,沒有人不知道吧?沒有人不在用吧?一般應該是天天用才是。SpringIoc和SpringAOP是Spring的兩大核心功能,讓java程序員解放了,各種整合框架,輕松搞定,把重心放到業(yè)務實現(xiàn)上去。
hibernate框架,也是我最喜歡的框架之一。是開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用。
可以說java官方的jpa,就是適應hibernate的超好用,而設計的。如果沒有hibernate,可以不一定有orm的出現(xiàn)。
MyBatis,不多說, 也是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數(shù)以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。
Apache Shiro是一個強大且易用的Java安全框架,執(zhí)行身份驗證、授權、密碼和會話管理。使用Shiro的易于理解的API,您可以快速、輕松地獲得任何應用程序,從最小的移動應用程序到最大的網(wǎng)絡和企業(yè)應用程序。
Activiti項目是一項新的基于Apache許可的開源BPM平臺,從基礎開始構建,旨在提供支持新的BPMN 2.0標準,包括支持對象管理組(OMG),面對新技術的機遇,諸如互操作性和云架構,提供技術實現(xiàn)。
隨著DevOps的流行,Spring Cloud是一系列框架的有序集合,當前最為流行。這里涉及到好多框架,我就不一一列出來了,大家可以自己去了解。
總之,做為一個Java開發(fā)者,熟練掌握并應用20種以上框架應該不叫算多,Java的生態(tài)太強大,所有大家要好好學習呀。
我主要用的框架有這三個:Spring/STRUCTS/Hibernate。
Spring是一個解決了許多在J2EE開發(fā)中常見的問題的強大框架。 Spring提供了管理業(yè)務對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習慣。Spring的架構基礎是基于使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。 Spring提供了的數(shù)據(jù)訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率并且減少了可能的錯誤。Spring的數(shù)據(jù)訪問架構還集成了Hibernate和其他O/R mapping解決方案。Spring還提供了的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業(yè)事務--如果你需要--還能實現(xiàn)你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統(tǒng)EJB相關的關鍵服務。Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。
Struts是一個基于Sun J2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現(xiàn)的。由于Struts能充分滿足應用開發(fā)的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統(tǒng)一的框架中,開發(fā)人員利用其進行開發(fā)時不用再自己編碼實現(xiàn)全套MVC模式,極大的節(jié)省了時間,所以說Struts是一個非常不錯的應用框架。
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序?qū)嵱?,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數(shù)據(jù)持久化的重任。,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數(shù)據(jù)持久化的重任。映射很簡單呀,就是頁面的映射呀,多做點練習就會了。
Java的學習主要包括:語法基礎、面向?qū)ο笏枷搿W習任何一門語言語法都是必須的,因為Java的接近自然語言,也是一種相對比較容易學的語言。同時面向?qū)ο缶幊谈瞧浜诵乃枷?,要理解其實只要記住一句話就行了,那就是:一切皆是對象?/p>
中級的IO流、多線程、反射及注解等。IO流程、多線程等是相對比較高級一點,例如我們可以讀取一個Excel文件、將一個文件分離,做一個時鐘、使用多個線程發(fā)送郵件等等很多有意思的事。另外反射及注解更是后面流行框架SSH等的基礎,在使用中你便會慢慢感受到它的無窮魅力。
現(xiàn)在來說Java最流行的應用還是Web開發(fā)。像HTML、CSS、Javascript等都是基礎的知識,另外作為開發(fā)人員對目對于結構化的數(shù)據(jù),我們常用的還是像Oracle、Mysql和PostgreSQL之類的關系型數(shù)據(jù)庫。同時針對數(shù)據(jù)庫編程還是PL/SQL需要學習。使用Java訪問數(shù)據(jù)庫的話還有JDBC。
作為Java開發(fā),CoreJava是核心,而作為JavaWeb開發(fā),我認為Servlet才是核心。Servlet是服務器端的Java應用程序,但是與普通的Java應用程序不同的是,它是由web服務器來加載啟動,即我們常說的Servlet,如Tomcat便是servlet容器。另外談到J2EE開發(fā),這里有一個重要的模型不得不提一下,很多人其實已經(jīng)想到了,那便是MVC(模型-視圖-控制器)模型。在傳統(tǒng)的web開發(fā)中,往往是JavaBean充當模型、JSP做視圖而Servlet作為控制器。
說到框架,其實已經(jīng)提到了著名的MVC模型,SSH(Struts+Spring+Hibernate)就是一個非常好的實現(xiàn)。對于每一個框架的作用,我想就不用多說了,畢竟這里并不是想寫一本教程。另外還有工作流開發(fā)的JBPM,搜索引擎Lucence及使系統(tǒng)對外提供接口的webservice應用組件等都是應該要掌握的。
明確的學習目的。安守本分做好一名士兵,還是有所追求想做軍官?這就是目標。學習也要有目的,盲目的學習必然 會使我們手忙腳亂,效率低下;有目的的學習才能使我們這只漂泊在知識海洋上的小船看到燈塔??傊?,學好軟件開發(fā)并不是單一影響,而是多方的作用,只有兼容并包,相互協(xié)調(diào)才能把軟件開發(fā)學好。
學習方法。學習方法很重要,好的學習方法會使我們事半功倍,而不好的學習方法會使我們事倍功半,做什么事都要注重功效。
良好的心態(tài)。興趣是最好的老師,或許你并非抱著對軟件開發(fā)極大的興趣和熱情來學習的,但興趣是最好的老師,我們可以在學習的過程中培養(yǎng)興趣,有良好的學習心態(tài),不只是為學習而學習,而是為興趣而學習,為就業(yè)而學習。
良好的習慣。無論在學習上還是在生活上養(yǎng)成一個良好的習慣都對我們有很大的益處,生活和習慣又相輔相成,相得益彰,相互影響,相互作用。
注重理論基礎。軟件開發(fā)最好有一定的理論基礎。通其理才能更好的理解技能的精髓,才懂得融會貫通,軟件開發(fā)學習也適用于這一點,不要忽視理論課的作用,理論是為了更好的實踐。甲骨文培訓學校的教員表示:“好的培訓學校能做到讓學生即能對理論課付出較大的熱情,又能在實踐操作上表現(xiàn)出色。”,只有理論和實踐合理的搭配才能學好軟件開發(fā)技術。
學java首先你要學 J2SE,它是java體系的基礎,也是重中之重。很多人往往不重視基礎,其實這是舍本逐末的做法。說這么多就是希望大家能重視基礎,能在這條路上走的更遠。
學j2se有下面幾個目標:
1、你要能真正理解面向?qū)ο蟮膬?yōu)勢,理解為什么不是面向過程。
2、掌握java語法基礎。包括異常處理、多線程、網(wǎng)絡編程、GUI編程等
3、如果你對swing不感興趣,可以跳過它。
這一階段結束后,你需要能獨立寫一個小游戲,比如坦克大戰(zhàn)、俄羅斯方塊、貪吃蛇等。
當你完成J2SE的學習之后,你就要開始學習java web了。
你需要掌握web基礎知識:html、css、javascript、ajax、jQuery。別怕,這些技術看起來很多,其實也沒要你精通它們,只是要你能在用到它們的時候,能通過快速查閱相關文檔,能正確使用它們。如果這一階段順利的話,你可能還用不到一個月。學習servlet、jsp、jdbc。這些是javaweb的基礎,如果你自學有難度,可以在網(wǎng)上下載一些相關視頻,幫助理解,降低學習難度曲線。
當你完成上一階段的學習后,你就可以進入J2EE的階段了。
這一階段,你可能會見到很多各種各樣的框架,會讓你眼花繚亂,頭暈目眩。不過別擔心,你只需要學習三個就足夠了。它們是struts2、hibernate、spring。這些框架為搭建具有可伸縮性、靈活性、易維護性的商務系統(tǒng)提供了良好的機制。首先你需要學習三個框架的基本配置和使用,直到你能熟練搭建一個ssh項目。如果學有余力,你可以深入學習這些框架的設計模式。
問題:平時主要使用什么Java開發(fā)框架
回答:基礎框架是Spring Boot,在工作過程中使用過Spring Cloud 和 Dubbo來實現(xiàn)微服務架構。
Spring Cloud 和 Dubbo 也是目前主流的微服務實現(xiàn)架構,現(xiàn)在公司的中臺就是采用的Dubbo,但是也是遇到許多問題。接下來會慢慢重構掉,有考慮采用Spring Cloud來實現(xiàn)。
java開發(fā)框架的springcould,sringboot都是新潮流了,當然,這些都要有一些定的基礎才能使用的了,而且小團隊的話對于這些框架很難掌握的,我比較推薦別人開發(fā)好的低代碼平臺開發(fā)了,跑起來就能用,不用寫代碼,拖拖拉拉就可以實現(xiàn)功能,這鐘對于項目來說很快,我們公司使用的就是天翎的低代碼開發(fā)平臺,推薦使用
我推薦一個基于spring cloud 外延的一個開源項目,主要是針對企業(yè)信息化方向的,做得比較不錯,能開源,支持商用。
開源地址:JVS/jvsgitee.com/software-minister/jvsgitee.com/software-minister/jvs
里面實現(xiàn)了 SaaS(用戶與租戶的多對多關系)、統(tǒng)一多模式登陸、在線表單配置、在線列表頁配置,在線流程配置,在線圖表配置等等。
系統(tǒng)部分截圖:
登陸頁面
配置化首頁
系統(tǒng)基礎信息設置
框架基礎功能
應用創(chuàng)建()
列表配置
流程配置
表單配置
圖表配置
邏輯配置
分享個開源項目快速開發(fā)框架,采用spring cloud alibaba +nacos +vue的 技術棧,實現(xiàn)了大部分
釘釘宜搭的快速開發(fā)功能,很值得借鑒下。
這是在git上開源的快速開發(fā)項目,項目采用微服務為基礎的腳手架,包括流程、表單、列表、圖
表、應用等多個界面化的配置引擎。
項目介紹:
項目標簽
低代碼、微服務、支持SaaS、私有化部署、DevOps、
開源項目地址
體驗地址:http://frame.bctools.cn/#/login
登陸可以通過微信掃碼登陸,對于配置數(shù)據(jù),請各位技術同學手下留情。
部署文檔
https://gitee.com/software-minister/jvs-docker-compose/blob/master/readme.md
**物理拓撲:
技術文檔地址(微信登陸可查看):
技術棧說明:
系統(tǒng)部分截圖:
登陸頁面
配置化首頁
系統(tǒng)基礎信息設置
框架基礎功能
應用創(chuàng)建
列表配置
流程配置
表單配置
圖表配置
邏輯配置
demo環(huán)境:http://frame.bctools.cn/#/login
開源地址:https://gitee.com/software-minister/jvs
如果還有其他的疑問,可以私信
0
回答0
回答5
回答0
回答8
回答0
回答0
回答0
回答0
回答3
回答