Spring框架簡介①
Spring是一個開源框架, 採用bean來替換ejb。從簡單性、可測試性、和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和麵向切面(AOP)。
下面簡單介紹一下在沒有使用Spring框架的時候直接new 一個bean的過程(比較繁瑣)
簡單java工程截圖:
dao層:
UserDao.java
package com.rl.spring.dao;
public interface UserDao {
public void save();
}
UserDaoImpl.java
package com.rl.spring.dao.impl;
import com.rl.spring.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("user被儲存了!");
}
}
UserService.java
package com.rl.spring.service;
public interface UserService {
public void save();
}
UserServiceImpl.java
package com.rl.spring.service.impl;
import com.rl.spring.dao.UserDao;
import com.rl.spring.dao.impl.UserDaoImpl;
import com.rl.spring.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao = new UserDaoImpl();
@Override
public void save() {
userDao.save();
}
}
測試程式碼:
package com.rl.spring.service;
import org.junit.jupiter.api.Test;
import com.rl.spring.service.impl.UserServiceImpl;
class UserServiceTest {
UserService userService = new UserServiceImpl();
@Test
void testSave() {
userService.save();
}
}
控制檯輸出:
user被儲存了!
這種自己new的bean有一個非常不好的地方在於高耦合, 我們做程式講究低耦合, 高內聚, 這種自己new的形式有了一種侵入性.
可以將上面的例子做個修改: 增加一個工廠bean
如圖:
FactoryBean.java
package com.rl.spring.factory;
import com.rl.spring.dao.UserDao;
import com.rl.spring.dao.impl.UserDaoImpl;
public class FactoryBean {
public static UserDao getDao(String name) {
if(name == "userDao") {
return new UserDaoImpl();
}
return null;
}
}
修改UserServiceImpl.java
package com.rl.spring.service.impl;
import com.rl.spring.dao.UserDao;
import com.rl.spring.factory.FactoryBean;
import com.rl.spring.service.UserService;
public class UserServiceImpl implements UserService {
// private UserDao userDao = new UserDaoImpl();
//利用工廠Bean的形式來獲得Dao
private UserDao userDao = new FactoryBean().getDao("userDao");
@Override
public void save() {
userDao.save();
}
}
這樣就解決了侵入性的問題, 這種方式同樣也是Spring的實現邏輯, Spring需要配置檔案來配置, 並把你具體需要的bean利用Factory來建立.
控制反轉就是應用本身不負責物件的建立和維護, 物件和依賴物件建立完全交給Spring的容器去管理和維護, 這個權利反轉給容器.
控制反轉和依賴注入其實是一個概念, 達到了大大降低耦合性的目的(解耦分層),
相關文章
- Spring框架簡介⑩Spring框架
- Spring框架簡介⑨Spring框架
- Spring框架簡介⑧Spring框架
- Spring框架簡介⑦Spring框架
- Spring框架簡介⑥Spring框架
- Spring框架簡介⑤Spring框架
- Spring框架簡介④Spring框架
- Spring框架簡介③Spring框架
- Spring框架簡介②Spring框架
- Spring 簡介Spring
- Scrapy框架簡介框架
- SpringMVC框架簡介②SpringMVC框架
- SpringMVC框架簡介①SpringMVC框架
- Hibernate框架簡介⑤框架
- Hibernate框架簡介④框架
- Hibernate框架簡介③框架
- Hibernate框架簡介②框架
- Hibernate框架簡介①框架
- HTML 框架簡介HTML框架
- spring框架的介紹Spring框架
- Spring Batch 簡介SpringBAT
- Spring框架之IOC介紹Spring框架
- [轉]SSH框架簡介框架
- Spring常用Annotation簡介Spring
- Spring_Framework_簡介SpringFramework
- Spring系列.Bean簡介SpringBean
- Spring(2)-AOP簡介Spring
- Flutter路由框架Fluro簡介Flutter路由框架
- uni-app 框架簡介APP框架
- wsgiref模組、web框架、django框架簡介Web框架Django
- Spring Security中AuthorizationManager簡介Spring
- Spring AOP基礎簡介Spring
- Spring Cloud Gateway使用簡介SpringCloudGateway
- Spring中雲事件簡介Spring事件
- Spring 框架基礎(06):Mvc架構模式簡介,執行流程詳解Spring框架MVC架構模式
- Spring框架系列(2) - Spring簡單例子引入Spring要點Spring框架單例
- 工作流框架Flowable 簡介框架
- OSX 攻擊框架Empyre簡介框架