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框架簡介②Spring框架
- Scrapy框架簡介框架
- HTML 框架簡介HTML框架
- Flask 框架簡介Flask框架
- Django框架簡介Django框架
- graphicsview框架簡介View框架
- Spring簡介Spring
- Spring 簡介Spring
- spring框架的介紹Spring框架
- Hibernate框架簡介⑤框架
- Hibernate框架簡介④框架
- Hibernate框架簡介③框架
- Hibernate框架簡介②框架
- Hibernate框架簡介①框架
- SpringMVC框架簡介②SpringMVC框架
- SpringMVC框架簡介①SpringMVC框架
- [轉]SSH框架簡介框架
- [原]ZolltyMVC框架簡介MVC框架
- 【SSH】--SSH框架簡介框架
- Spring原理簡介Spring
- Spring Batch 簡介SpringBAT
- wsgiref模組、web框架、django框架簡介Web框架Django
- spring框架結構介紹Spring框架
- 【轉載】spring框架介紹Spring框架
- Spring框架之IOC介紹Spring框架
- Flutter路由框架Fluro簡介Flutter路由框架
- uni-app 框架簡介APP框架
- 關於Struts框架簡介框架
- Spring_Framework_簡介SpringFramework