一.傳統的開發模式
基于mvc模式進行項目開發;
基于mvc的項目框架結構:
Entity
/dao
/service
/action
思考:
1. 對象創建創建能否寫死?
2. 對象創建細節
對象數量
action 多個 【維護成員變量】
service 一個 【不需要維護公共變量】
dao 一個 【不需要維護公共變量】
創建時間
action 訪問時候創建
service 啟動時候創建
dao 啟動時候創建
3. 對象的依賴關系
action 依賴 service
service依賴 dao
總結:
spring就是解決上面的問題的!
簡單來說,就是處理對象的創建的、以及對象的依賴關系!
二.專業術語了解
組件/框架設計
1.侵入式設計
引入了框架,對現有的類的結構有影響;即需要實現或繼承某些特定類。
2.非侵入式設計
引入了框架,對現有的類結構沒有影響。
3.控制反轉:
Inversion on Control , 控制反轉 IOC
對象的創建交給外部容器完成,這個就做控制反轉.
4.依賴注入, dependency injection 處理對象的依賴關系
-
區別:
控制反轉, 解決對象創建的問題 【對象創建交給別人】
依賴注入,在創建完對象后, 對象的關系的處理就是依賴注入 【通過set方法依賴注入】
5.AOP
面向切面編程。切面,簡單來說來可以理解為一個類,由很多重復代碼形成的類。
切面舉例:事務、日志、權限;
三.開發步驟
1.添加jar包
maven項目加載:pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
image.png
2.核心配置文件
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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--IOC容器,所有創建的文件都配置在這里-->
<bean id="user" class="com.huan.User"></bean>
</beans>
3.寫User.java
package com.huan;
/**
* Created by 馬歡歡 on 2017/6/24.
*/
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.測試創建對象
1.通過工廠類的到容器創建的對象
@Test
public void test1(){
//將對象交給SpringIOC容器創建
Resource resource = new ClassPathResource("Spring/applicationContext.xml");
//創建容器對象(Bean工廠)
BeanFactory factory =new XmlBeanFactory(resource);
User user = (User) factory.getBean("user");
System.out.println(user.getId());
}
2.直接的到容器對象
@Test
public void test2(){
//得到IOC容器對象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
User user = (User) applicationContext.getBean("user");
user.setUsername("huanhuan");
System.out.println(user.getUsername());
}
5.運行結果
文集:Spring框架學習