1、Spring框架簡介
Spring是一個開源框架,Spring是在2003年興起的一個輕量級的開源框架,由Rod johnson創建。主要對JavaBean的生命周期進行管理的輕量級框架,Spring給JavaEE帶來了春天。
2、Spring框架特點
√ 輕量級:不是說他的文件大小很小,指的Spring是非侵入性。
知識點:輕量級框架和重量級框架的區別
輕量級和重量級的框架是以啟動程序所需要的資源所決定,比如EJB在啟動程序的時候需要消耗大量的資源,內存和CPU,所以是重量級。
√ 依賴注入:IOC(DI)和面向切面編程:AOP
√ 容器:Spring是一個容器,因為它包含並且管理應用對象的生命周期
√ 框架:Spring實現了使用簡單的組件配置組合成一個復雜的應用。
√ 一站式:在IOC和AOP的基礎上可以整合各種企業應用的開源框架和優秀的第三方類庫
3、Spring架構
Test:Spring支持Junit單元測試
Core Container(核心容器):里面能看到有4個核心的內容,也就是如果需要使用Spring,這4個jar包是絕對不能少的。
① spring-beans-4.3.6.RELEASE.jar (Beans):Bean工廠,創建對象
② spring-core-4.3.6.RELEASE.jar (Core):核心的基礎
③ spring-context-4.3.6.RELEASE.jar(Context):上下文ApplicationContext
④ spring-expression-4.3.6.RELEASE.jar(SpEL:Spring的EL表達式)
知識點:還有一個jar包也是必須的,因為Spring使用了它
⑤ commons-logging-1.2.jar
AOP:面向切面編程
Transactions:聲明式事務
ORM、JDBC:可以整合hibernate和mybatis
Web、Servlet:可以整合Stucus2和Spring MVC
4、創建一個HelloWorld項目(博客園最純凈、最簡單版本)
下載spring的jar包:http://repo.spring.io/release/org/springframework/spring
為了更好的理解Spring的jar包依賴,我們不用maven創建。我們也不用web.xml文件來初始化加載spring容器,完全原始打造。主要目的就是為了理解一下最純凈最簡單的spring項目是什么樣子的。
①、首先創建引入jar包,上面5個jar包進入即可
看到了嗎?5個jar就可以創建了。是創建helloworld的最小基本單元了。再少就不能運行了。
②、創建一個HelloWorld.class
1 public class HelloWorld { 2 private String name; 3 public void setName(String name) { 4 System.out.println("調用了設置屬性"); 5 this.name = name; 6 } 7 public HelloWorld(){ 8 System.out.println("初始化構造器"); 9 } 10 public void hello(){ 11 System.out.println("Hello: " + name); 12 } 13 }
③ 創建一個Spring的配置文件applicationContext.xml
1 <bean id="helloworld" class="HelloWorld"> 2 <property name="name" value="Spring"></property> 3 </bean>
④ 創建一個Main.class(主函數入口)
1 public static void main(String[] args) { 2 //1、創建Spring的IOC容器的對象 3 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 4 //2、從IOC的容器中獲取Bean的實例 5 HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloworld"); 6 //3、調用hello方法 7 helloWorld.hello(); 8 }
輸出結果:
初始化構造器
調用了設置屬性
Hello: Spring
思考一下,如果上面main里的方法我把獲取Bean的實例和調用hello方法的都注釋掉(即把2和3的全注釋掉),那么結果應該是什么?
輸出結果:
初始化構造器
調用了設置屬性
說明了在創建SpringIOC容器的時候,就已經對類進行了實例化並對屬性進行了賦值
---------------------------------------------------------------------------------