spring筆記整理大全(一)
1.spring起源:
早期使用java開發企業應用(企業應用系統,比如:人力資源管理系統、OA辦公自動化系統、財務系統 ,所有企業應用的系統總稱為ERP)使用EJB(Enterprise java Bean)開發,是sun提供的規範,比如:把javabean分為:Bean(Session Bean),實體Bean(Entity Bean)和訊息驅動Bean(MessageDriven Bean)。
EJB特點依賴於應用伺服器(比如:weblogic、websphere,類似 於tomcat),在開發EJb程式時過程比較繁瑣。
Spring的出現是為了取代EJB的臃腫、低效、脫離現實缺點。Spring致力於J2EE應用的各層的解決方案,而不是僅僅專注於某一層的方案。可以說Spring是企業應用開發的“一站式”選擇,並貫穿表現層、業務層及持久層。然而,Spring並不想取代那些已有的框架,而是與它們無縫地整合。
2.參考資料
3.spring定義(什麼是spring)(官網: http://spring.io/ )
Spring是分層的JavaSE/EE應用一站式的輕量級開源框架。以Ioc(Inverse of control)控制反轉和Aop(Aspect Oriented Programming)面向切面程式設計為核心 。
分層:
web層
web層:spring MVC框架(類似 struts2,是一個mvc框架),提供和其它web層整合方案;
業務層
業務層:宣告式事務管理方式、任務排程;
持久層
持久層:jdbc模版開發工具包、和其它持久層hibernate框架整合方案;
上邊各層以IOC和AOP作為基礎。
一站式:
spring提供各層的解決方案。
輕量級:
相對於EJB來說,好用,簡單、方便,spring不依賴應用伺服器(weblogic)。
開源框架:
純java開源框架;
整合眾多開源框架;
和Struts2 表現層框架整合;
和Hibernate 持久層框架整合;
和Ibatis、Mybatis持久層框架整合 ;
現在企業 90% 以上,都在使用Spring !!!!!!!
4.Spring好處
1.方便解耦,簡化開發:
Spring就是一個大工廠,可以將所有物件建立和依賴關係維護,交給Spring管理
2.AOP程式設計的支援:
Spring提供面向切面程式設計,可以方便的實現對程式進行許可權攔截、執行監控等功能
3.宣告式事務的支援:
只需要通過配置就可以完成對事務的管理,而無需手動程式設計
4.方便程式的測試:
Spring對Junit4支援,可以通過註解方便的測試Spring程式
5.方便整合各種優秀框架:
Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支援
6.降低JavaEE API的使用難度:
Spring 對JavaEE開發中非常難用的一些API(JDBC、JavaMail、遠端呼叫等),都提供了封裝,使這些API應用難度大大降低
5.spring裝配Bean/例項化Bean的方式
1.applicationContext.xml方式:
在xml當中配置一個bean,然後寫一個入口測試一下
2.註解方式:
用到的註解有:@Component,@Repository,@Service,@Controller
然後在配置檔案裡添加註解掃描:
3.javaBean的方式:
宣告一個java類,類上加@Configuration,如果是springboot專案,類上加@SpringBootConfiguration,
方法上加@Bean這個註解:
6.FactoryBean和BeanFactory的區別
FactoryBean,是一個特殊Bean,可以生產另一個bean。
BeanFactory,是一個工廠,可以生產任意bean。
7.IOC、DI
不使用IOC物件之間呼叫,存在耦合問題;
如果使用IOC思想,將iOC當成一個容器,物件要呼叫另一個物件時,通過iOC容器來呼叫,
引用iOC,iOC是Inversion of Control的縮寫,翻譯成“控制反轉”;
IOC定義:
將原來程式中自己建立實現類物件的控制權反轉到iOC容器中,程式只需要從iOC容器獲取建立好的物件;
iOC容器相當於一個工廠;
DI:
所謂依賴注入,就是由IOC容器在執行期間,動態地將某種依賴關係注入到物件之中。
8.IOC和DI的區別
iOC和 DI 描述的是同一件事 ;
iOC強調 將物件的建立權,被反轉到IoC 容器;
DI 強調 iOC容器將物件的依賴關係,動態注入到物件之中 ,DI是控制反轉具體的實現過程。
依賴注入關係:
9.IOC容器的作用
1、將bean配置在applicationContext.xml中,IOC容器在構建時自動建立bean例項(相當於new 物件)
2、將bean所依賴的bean配置在applicationContext.xml中,IOC容器自動將bean所依賴的物件注入進去。
10.ClassPathXmlApplicationContext的三種路徑方式
兩個xml傳入另一個xml中:import
11.bean的命名方式
1.id
<bean id="pName1" class="pojo.Person"></bean>
2.name
1)name引號裡的值不能重複,
<bean name="pName2" class="pojo.Person"></bean>
<bean name="pName3" class="pojo.Person"></bean>
2) name可以定義多個用逗號隔開,
<bean name="pName4,pName5" class="pojo.Person"></bean>
3)獲取任意name即可獲取bean
3.匿名
沒有名稱,自定義的獲取需要的全限定名
<bean class="pojo.Person"></bean>
12.bean的作用域
1.singleton
單例 預設使用單例,不存資料共享用單例,單例就建立一個例項 ;
<bean id="dan" class="pojo.Person" scope="singleton"></bean>
2.prototype
多例 存在資料共享用多例,多例每次都會建立一個例項;
<bean id="duo" class="pojo.Person" scope="prototype"></bean>
spring筆記整理大全(二)連結: