SSM · IOC ·AOP 初識Spring : Spring全家桶 Spring Framework 底層框架,設計性框架 Spring Boot 加速開發,提高開發速度 Spring Cloud 分散式開發 Spring Framework系統架構 Spring Framework是Sprin ...
SSM
· IOC
·AOP
初識Spring :
Spring全家桶
Spring Framework 底層框架,設計性框架
Spring Boot 加速開發,提高開發速度
Spring Cloud 分散式開發
Spring Framework系統架構
Spring Framework是Spring生態圈最基礎的項目
· Core Container:核心容器
· Aspects: A OP思想實現
· AOP: 面向切麵編程
· Data Access: 數據訪問
· Data Integration: 數據集成
· Web: Web開發
· Test: 單元測試與集成測試
核心概念: IoC/DI,IoC容器,Bean
目標: 充分解耦
· IoC:(Inversion of Control)控制反轉
解決耦合度偏高的問題,不再主動new產生對象,轉為由外部提供對象
· Spring技術對IoC思想進行實現
· Spring提供一個容器,IoC容器來充當“外部” == Core Container
· IoC容器負責對象的創建,初始化等 被創建或者管理的對象在IoC中統稱為Bean
· DI(Dependency Injection)依賴註入
· 在容器中建立bean和bean之間的依賴關係的整個過程,為依賴註入
最終效果:使用對象時不僅可以直接從IoC容器中獲取,並且獲取到的bean已經綁定了所有的依賴關係
入門案例
定義在Spring管理的類(介面)
public interface BookDao {
public void save();
}
public class BookDaoImpl implements BookDao {
public void save(){
System.out.println("book dao");
}
}
建立maven依賴 ==== Spring環境
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
在Spring配置xml文件中配置bean
<!-- 2.配置bean-->
<bean id="bookDao" class="com.liuxin.dao.impl.BookDaoImpl"/>
calss配實現類,需要用它創建對象
id配一個名字
註意:bean定義時id屬性在同一個上下文不能重覆
在主方法中運行
public static void main(String[] args) {
//3.獲取IoC容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");// 這裡參數為配置的spring的xml文件名
//4.獲取bean
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
//5.調用bean對象方法
bookDao.save();
}
運行報錯:不支持發行版本5
解決辦法:設置 =》構建,執行,部署 =》java編譯器 =》將目標位元組碼版本改為9
DI入門案例
-----基於上一個案例
public class BookServiceImpl implements BookService {
//刪除業務層中使用new方法創建的dao對象
//private BookDao bookDao=new BookDaoImpl();
private BookDao bookDao;
public void save(){
System.out.println("book service");
bookDao.save();
}
//提供對應的set方法
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
配置service和dao的關係
<!-- 2.配置bean-->
<bean id="bookDao1" class="com.liuxin.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.liuxin.service.impl.BookServiceImpl">
<!-- 7.置service和dao的關係-->
<property name="bookDao" ref="bookDao1"/>
</bean>
property標簽表示配置當前bean的屬性
name屬性表示配置哪一個具體的屬性 -----配實例的變數名
ref屬性表示參照哪一個bean ------配id
bean配置
基本配置
別名配置
// id和name地位相同
bean作用範圍配置
bean實例化
1.構造方法
調用的是無參構造方法
如果無參構造方法不存在,將拋出異常BeanCreationException