官網:spring.io
1,spring是一個開源框架,
1,包下載:https://repo.spring.io/release/org/springframework/spring/
https://mvnrepository.com/artifact/org.slf4j/slf4j-api/2.0.0-alpha1
2,導包:commons-logging-1.2.jar
spring-beans-5.3.2.jar
spring-context-5.3.2.jar
spring-core-5.3.2.jar
spring-expression-5.3.2.jar
spring-test-5.3.2.jar
2,spring是分層的JavaEE,一站式輕量級框架,
分層的javaEE:
持久層:--jdbc(性能)、Mybatis()
視圖層:--jsp/servlet
控制層:--servlet
一站式:JavaEE 每層都有解決方案
輕量級:spring無侵入式(低耦合,高內聚)
3,spring版本:
1,GA 穩定版
2,SNAPSHOT 快照版,可以穩定使用,且仍在繼續改進
3,RELEASE 預覽版,內側版本
4,spring核心:
1,ioc & di
IOC控制反轉 Inverse object control
1,控制什么?new物件的權利
1,專案,程式中都是程式員 new物件
(以前我們要自己new物件,現在spring幫我們new物件,以后我們需要物件,就找spring要)
以前:做鞋子手工做,效率低,每個細節都要關注
現在:工廠做,效率高,不需要關注每個細節
2,誰控制誰?
1,程式控制 new物件
3,反轉什么?
1,程式員 new物件的權利反轉給spring
2,aop
3,事物管理器
4,spring mvc&webFlux --最新的 mvc框架
5,spring中為什么叫bean工廠而不叫物件工廠?
1,物件----new類出來就是物件(女朋友,說換就換)
2,bean---具有生命周期的物件(媳婦,不能說換就換)
6,spring bean工廠
1,不適用bean工廠模式
面向物件的六大原則:開閉原則 系統/程式對修改關閉,對擴展開放
2,自己實作工廠----GOF23設計模式(單列模式,工廠模式)
1,自己閱讀工廠模式材料學習
2,開閉原則:對修改關閉,對擴展開發
例子:
//創建一個BlackPig類 繼承Pig父類
public class BlackPig extends Pig{ private int age; private String name; public BlackPig() { System.out.println("呼叫了BlackPig的構造方法"); } public BlackPig(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "BlackPig [age=" + age + ", name=" + name + "]"; } }
//創建一個pig類
public class Pig {
}
//創建一個工廠
/*
* 物件工廠還不能說是bean工廠
*
*
*/
public class ObjectFactory<T> {
//不夠優雅
// public RedPig createRedpig() {
// return new RedPig();
// }
// public BlackPig createBlackPig() {
// return new BlackPig();
// }
/**
* 稍微修改 多型:父參考指向任何子類物件
* Pig p1 = new RedPig();
*
* Pig p2 = new BlackPig();
*/
// public Pig createPig(String type) {
// if(type.equals("red")) {
// return new RedPig();
// }else if(type.equals("black")) {
// return new BlackPig();
// }else if(type.equals("blue")) {
// return new BluePig();
// }else if(type.equals("green")) {
// return new GreenPig();
// }else {
// return null;
// }
// }
//優雅的玩法 符合開閉原則的玩法 spring玩法
public T createPig(Class clazz) {
try {
return (T) clazz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
//測驗
public class Test {
public static void main(String[] args) {
//1.通過豬物件工廠獲取黑豬或紅豬物件
ObjectFactory<Pig> factory = new ObjectFactory<Pig>();
//獲取黑豬
Pig blackPig =factory.createPig(BlackPig.class);// (BlackPig) factory.createPig("black");//factory.createBlackPig();
//獲取狗,一樣需要dog父類,和dog類
ObjectFactory<Dog> factory2 = new ObjectFactory<Dog>();
Dog createPig = factory2.createPig(RedDog.class);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/234985.html
標籤:Java
