Spring01:概述及IOC理論推導
官網 : http://spring.io/
官方下載地址 : https://repo.spring.io/libs-release-local/org/springframework/spring/
GitHub : https://github.com/spring-projects
Spring01:概述及IOC理論推導
Spring是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器(框架)
IOC基礎
新建專案
User
@Data
public class User {
private int id;
private String name;
private String pwd;
}
UserDao
public interface UserDao {
public void getUser();
}
UserdaoImpl
public class UserDaoImpl implements UserDao{
@Override
public void getUser() {
System.out.println("獲取使用者資料");
}
}
UserService
public interface UserService {
public void getUser();
}
UserServiceImpl
public class UserServiceImpl implements UserService{
private UserDao userDao=new UserDaoImpl();
@Override
public void getUser(){
userDao.getUser();
}
}
測試
public class MyTest {
@Test
public void testGetUser(){
UserServiceImpl service = new UserServiceImpl();
service.getUser();
}
}
擴充套件功能
新增實現類UserDaoMySqlImpl
public class UserDaoMySqlImpl implements UserDao {
@Override
public void getUser() {
System.out.println("MySQL獲取使用者資料");
}
}
UserServiceImpl中
public class UserServiceImpl implements UserService{
private UserDao userDao=new UserDaoMySqlImpl();
@Override
public void getUser(){
userDao.getUser();
}
}
再新增一個UserDaoOracleImpl
public class UserDaoOracleImpl implements UserDao {
@Override
public void getUser() {
System.out.println("Oracle獲取使用者資料");
}
}
修改UserServiceImpl
public class UserServiceImpl implements UserService{
private UserDao userDao=new UserDaoOracleImpl();
@Override
public void getUser(){
userDao.getUser();
}
}
問題:每一次都要修改
解決:使用set()方法實現
public class UserServiceImpl implements UserService{
private UserDao userDao;
//set實現
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
@Override
public void getUser(){
userDao.getUser();
}
}
測試
@Test
public void testGetUser() {
UserServiceImpl service = new UserServiceImpl();
service.setUserDao(new UserDaoMySqlImpl());
service.getUser();
//使用Oracle實現
service.setUserDao(new UserDaoOracleImpl());
service.getUser();
}
由呼叫者自行建立物件
相關文章
- SpringIOC 理論推導Spring
- 前饋網路求導概論(一)·Softmax篇求導
- 統一場理論公式推導和筆記——part5公式筆記
- 統一場理論公式推導和筆記——part6公式筆記
- 計算理論導論筆記筆記
- 機器學習入門學習筆記:(2.1)線性迴歸理論推導機器學習筆記
- 理論指導實踐薦
- AI 知識概論AI
- 設計模式概論設計模式
- 軟體工程——概論軟體工程
- HIS專案概論
- 網路安全概論
- 異常處理與推導式
- [概統]本科二年級 概率論與數理統計 第二講 幾何概型
- 大資料概論(2)大資料
- 《佛學概論》筆記筆記
- 轉摘_raid概論AI
- 資料倉儲概論
- 神經網路前向和後向傳播推導(一):概覽神經網路
- Python推導式(列表推導式、元組推導式、字典推導式和集合推導式)Python
- 01 知識圖譜概論
- 計算機網路概論計算機網路
- 大資料技術概論大資料
- 資料庫事務概論資料庫
- 訊息佇列之概論佇列
- 6-專案管理概論專案管理
- 推薦演算法概覽演算法
- 名校AI課推薦 | UC Berkeley《人工智慧導論》AI人工智慧
- 物件導向的基本理論1:類和物件物件
- iOS圖形處理概論:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,OpenCV等iOSGPUUIOpenCV
- 資訊保安與密碼學概論密碼學
- 【方法論】機器學習演算法概覽機器學習演算法
- linux檔案系統概論Linux
- 2-1 電機篇-概論
- 推薦系統技術概覽
- 思維導圖概覽SpringCloudSpringGCCloud
- 分散式從 ACID、CAP、BASE 的理論推進分散式
- Ioc模式 Dependency Injection模式和AOP討論模式