中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring框架和IOC容器是什么

發布時間:2020-07-20 10:10:16 來源:億速云 閱讀:221 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關Spring框架和IOC容器是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、Spring開源框架的簡介

Spring是一個開源框架,也是于2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的復雜性而創建的。

Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

spring的基本框架主要包含六大模塊:DAO、ORM、AOP、JEE、WEB、CORE。

  Spring框架和IOC容器是什么

Spring DAO:Spring提供了對JDBC的操作支持:JdbcTemplate模板工具類 。
Spring ORM:Spring可以與ORM框架整合。例如Spring整合Hibernate框架,其中Spring還提供HibernateDaoSupport工具類,簡化了Hibernate的操作 。
Spring WEB:Spring提供了對Struts、Springmvc的支持,支持WEB開發。與此同時Spring自身也提供了基于MVC的解決方案 。
Spring  AOP:Spring提供面向切面的編程,可以給某一層提供事務管理,例如在Service層添加事物控制 。
Spring   JEE:J2EE開發規范的支持,例如EJB 。
Spring Core:提供IOC容器對象的創建和處理依賴對象關系 。

二、Spring下IOC容器和DI(依賴注入Dependency injection)

??IOC容器:就是具有依賴注入功能的容器,是可以創建對象的容器,IOC容器負責實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。通常new一個實例,控制權由程序員控制,而"控制反轉"是指new實例工作不由程序員來做而是交給Spring容器來做。。在Spring中BeanFactory是IOC容器的實際代表者。

??DI(依賴注入Dependency injection) :在容器創建對象后,處理對象的依賴關系。

??依賴注入spring的注入方式:

set注入方式

靜態工廠注入方式

構造方法注入方式

基于注解的方式

??1、set注入方式:
?控制層代碼:

private OrderServiceImp orderService;
    
public void setOrderService(OrderServiceImp orderService) {
       this.orderService = orderService;
}

Spring配置XML文件:其中配置聲明OrderAction類存在屬性orderService。程式運行時候,會將已經實例化的orderService對象調用setOrderService方式注入。

<bean name="orderAction" class="com.pec.action.OrderAction">
        <property name="orderService" ref="orderService"></property>
</bean>
<bean name="orderService" class="com.pec.service.imp.OrderServiceImp"></bean>

2、構造器注入方式:

控制層代碼:

private OrderServiceImp orderService;
    
public OrderAction(OrderServiceImp orderService) {
        this.orderService = orderService;
    }

?Spring配置XML文件:

<bean name="orderAction" class="com.pec.action.OrderAction">
      <constructor-arg ref="orderService"></constructor-arg>
</bean>
<bean name="orderService" class="com.pec.service.imp.OrderServiceImp"></bean>

3、基于注解的方式(推薦使用,比較便捷少配置)

控制層代碼:

@Autowired   //@Resource
private OrderServiceImp orderService;

?服務層代碼:

@Service("orderService")
public class OrderServiceImp implements IOrderService {

    @Autowired
    private JavaOrderMDaoImp javaOrderMDao;

    @Autowired
    private JavaOrderDDaoImp javaOrderDDao;

    @Override
    public List<JavaOrderMList> findOrderM(OrderSearch search) {
        return javaOrderMDao.findJavaOrderM(search);
    }

    @Override
    public List<JavaOrderDList> findOrderD(OrderSearch search) {
        return javaOrderDDao.findJavaOrderD(search);
    }

}

DAO層代碼:

@Repository("javaOrderMDao")
public class JavaOrderMDaoImp extends BaseHibernateDAO<JavaOrderM, Serializable> implements IJavaOrderMDao {...}
@Repository("javaOrderDDao")
public class JavaOrderDDaoImp extendsBaseHibernateDAO<JavaOrderD, Serializable> implements IJavaOrderDDao {...}

?注意點:

??⑴ 持久層DAO層注解Repository中規定了名稱,在Service層中聲明名稱必須一致。

??⑵ 服務層Service層注解Service中規定了名稱,在控制層中聲明的名稱必須一致。

??⑶ 注解方式注入依賴注解:

@Component         把對象加入ioc容器,對象引用名稱是類名,第一個字母小寫
@Component(“name”) 把指定名稱的對象,加入ioc容器
@Repository        主要用于標識加入容器的對象是一個持久層的組件(類)
@Service           主要用于標識加入容器的對象是一個業務邏輯層的組件
@Controller        主要用于標識加入容器的對象是一個控制層的組件
@Resource          注入屬性(DI), 會從容器中找對象注入到@Resource修飾的對象上
@Autowired         注入屬性(DI), 會從容器中找對象注入到@Autowired修飾的對象上

⑷ 注解可以簡化配置,提升開發效率,但是也不利于后期維護。

注:@Autowired與@Resource的區別

上述就是小編為大家分享的Spring框架和IOC容器是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎囊县| 政和县| 永仁县| 化德县| 洛阳市| 隆安县| 贵德县| 新田县| 祁阳县| 金平| 休宁县| 安宁市| 海盐县| 莎车县| 高淳县| 普定县| 铜鼓县| 陇川县| 保山市| 山丹县| 丹凤县| 林周县| 湖南省| 宜良县| 樟树市| 和平区| 宽城| 天全县| 龙山县| 四子王旗| 桓仁| 辰溪县| 平遥县| 甘孜县| 彩票| 剑川县| 常德市| 克什克腾旗| 连南| 崇左市| 山西省|