本文記錄尚硅谷spring視頻的學習過程
1.spring是什麼?
- Spring 是一個開源框架.
- Spring 爲簡化企業級應用開發而生. 使用 Spring 可以使簡單的 JavaBean 實現以前只有 EJB 才能實現的功能.
- Spring 是一個 IOC(DI) 和 AOP 容器框架.
2.spring的具體描述:
- 輕量級:Spring 是非侵入性的 - 基於 Spring 開發的應用中的對象可以不依賴於 Spring 的 API
- 依賴注入(DI — dependency injection、IOC)
- 面向切面編程(AOP — aspect oriented programming)
- 容器: Spring 是一個容器, 因爲它包含並且管理應用對象的生命週期
- 框架: Spring 實現了使用簡單的組件配置組合成一個複雜的應用. 在 Spring 中可以使用 XML 和 Java 註解組合這些對象
- 站式:在 IOC 和 AOP 的基礎上可以整合各種企業應用的開源框架和優秀的第三方類庫 (實際上 Spring 自身也提供了展現層的 SpringMVC 和 持久層的 Spring JDBC)
3.spring模塊
4.初識spring項目,從HelloWorld開始
創建一個java項目,導入spring需要的jar包,從HelloWorld開始
項目截圖
從項目結構可以看出spring所需要的5個jar包,下載地址https://pan.baidu.com/s/1cCM9xO
基本的實體類HelloWorld
public class HelloWorld {
private String name;
public String getName() {
return name;
}
public void setName2(String name) {
this.name = name;
}
public void hello(){
System.out.println("hello:"+name);
}
}
有一個屬性提供了基本的get、set方法,提供一個hello方法用來打印屬性消息
打印HelloWorld
javase的寫法
public class Test {
public static void main(String[] args) {
//1.創建HelloWorld對象
HelloWorld helloWorld = new HelloWorld();
//2.通過set方法給HelloWorld的屬性複製
helloWorld.setName("tom");
//3.調用HelloWorld類提供的方法
helloWorld.hello();
}
}
控制檯打印的信息:
這是使用javase的方法打印出來的消息
現在使用spring來實現這個過程
創建一個spring的配置文件applicationContext.xml,該文件放置到項目的根目錄下。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloworld" class="com.iflytek.test.bean.HelloWorld">
<property name="name2" value="tom"></property>
</bean>
</beans>
現在通過spring來實現上面的過程
public class Test {
public static void main(String[] args) {
//1.創建spring的IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.從容器中獲取Bean
HelloWorld hello = (HelloWorld) ctx.getBean("helloworld");
//3.調用方法
hello.hello();
}
}
控制檯打印的信息:
快捷鍵
從控制檯中可以看出加載spring配置文件的日誌,顯示的效果和用javase的實現的一樣。
5.現在修改一下HelloWorld類,看spring做了哪些工作
public class HelloWorld {
private String name;
//在無參的構造函數中打印一條消息
public HelloWorld() {
super();
System.out.println("Constructed is used...");
}
public String getName() {
return name;
}
//在set方法中打印信息
public void setName(String name) {
System.out.println("after name:"+name);
this.name = name;
System.out.println("before name:"+name);
}
public void hello(){
System.out.println("hello:"+name);
}
}
從控制檯中可以看出,spring調用了默認的構造函數,並且對於屬性name我們並未給他賦值,但是打印出來的name是有賦值的。回頭去看配置文件
<bean id="helloworld" class="com.iflytek.test.bean.HelloWorld">
<property name="name" value="tom"></property>
</bean>
在這裏有一個value=“tom”,在這裏可以猜測應該是在這裏給屬性賦值了。
到這裏爲止,就是簡單的去使用了spring框架做了一個簡單的操作,算是spring的一個初識,後續開始去講解spring識如何初始化對象如何去給對象屬性賦值的。