摘要:簡單來說,是一個輕量級的控制反轉(zhuǎn)和面向切面的容器框架。的基本框架主要包含六大模塊??梢耘c框架整合。在中是容器的實際代表者。依賴注入在容器創(chuàng)建對象后,處理對象的依賴關(guān)系。
目錄
1. Spring開源框架的簡介
2. Spring下IOC容器和DI(依賴注入Dependency injection)
一、Spring開源框架的簡介??Spring是一個開源框架,也是于2003 年興起的一個輕量級的Java 開發(fā)框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中闡述的部分理念和原型衍生而來。它是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的。
??Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。 簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。
??spring的基本框架主要包含六大模塊:DAO、ORM、AOP、JEE、WEB、CORE。
Spring DAO:Spring提供了對JDBC的操作支持:JdbcTemplate模板工具類 。
Spring ORM:Spring可以與ORM框架整合。例如Spring整合Hibernate框架,其中Spring還提供HibernateDaoSupport工具類,簡化了Hibernate的操作 。
Spring WEB:Spring提供了對Struts、Springmvc的支持,支持WEB開發(fā)。與此同時Spring自身也提供了基于MVC的解決方案 。
Spring AOP:Spring提供面向切面的編程,可以給某一層提供事務管理,例如在Service層添加事物控制 。
Spring JEE:J2EE開發(fā)規(guī)范的支持,例如EJB 。
Spring Core:提供IOC容器對象的創(chuàng)建和處理依賴對象關(guān)系 。
??IOC容器:就是具有依賴注入功能的容器,是可以創(chuàng)建對象的容器,IOC容器負責實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。通常new一個實例,控制權(quán)由程序員控制,而"控制反轉(zhuǎn)"是指new實例工作不由程序員來做而是交給Spring容器來做。。在Spring中BeanFactory是IOC容器的實際代表者。
??DI(依賴注入Dependency injection) :在容器創(chuàng)建對象后,處理對象的依賴關(guān)系。
??依賴注入spring的注入方式:
set注入方式
靜態(tài)工廠注入方式
構(gòu)造方法注入方式
基于注解的方式
??1、set注入方式:
?控制層代碼:
private OrderServiceImp orderService; public void setOrderService(OrderServiceImp orderService) { this.orderService = orderService; }
Spring配置XML文件:其中配置聲明OrderAction類存在屬性orderService。程式運行時候,會將已經(jīng)實例化的orderService對象調(diào)用setOrderService方式注入。
??2、構(gòu)造器注入方式:
?控制層代碼:
private OrderServiceImp orderService; public OrderAction(OrderServiceImp orderService) { this.orderService = orderService; }
?Spring配置XML文件:
??3、基于注解的方式(推薦使用,比較便捷少配置)
?控制層代碼:
@Autowired //@Resource private OrderServiceImp orderService;
?服務層代碼:
@Service("orderService") public class OrderServiceImp implements IOrderService { @Autowired private JavaOrderMDaoImp javaOrderMDao; @Autowired private JavaOrderDDaoImp javaOrderDDao; @Override public ListfindOrderM(OrderSearch search) { return javaOrderMDao.findJavaOrderM(search); } @Override public List findOrderD(OrderSearch search) { return javaOrderDDao.findJavaOrderD(search); } }
?DAO層代碼:
@Repository("javaOrderMDao") public class JavaOrderMDaoImp extends BaseHibernateDAOimplements IJavaOrderMDao {...}
@Repository("javaOrderDDao") public class JavaOrderDDaoImp extendsBaseHibernateDAOimplements IJavaOrderDDao {...}
?注意點:
??⑴ 持久層DAO層注解Repository中規(guī)定了名稱,在Service層中聲明名稱必須一致。
??⑵ 服務層Service層注解Service中規(guī)定了名稱,在控制層中聲明的名稱必須一致。
??⑶ 注解方式注入依賴注解:
@Component 把對象加入ioc容器,對象引用名稱是類名,第一個字母小寫 @Component(“name”) 把指定名稱的對象,加入ioc容器 @Repository 主要用于標識加入容器的對象是一個持久層的組件(類) @Service 主要用于標識加入容器的對象是一個業(yè)務邏輯層的組件 @Controller 主要用于標識加入容器的對象是一個控制層的組件 @Resource 注入屬性(DI), 會從容器中找對象注入到@Resource修飾的對象上 @Autowired 注入屬性(DI), 會從容器中找對象注入到@Autowired修飾的對象上
??⑷?注解可以簡化配置,提升開發(fā)效率,但是也不利于后期維護。
?注:@Autowired與@Resource的區(qū)別
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71763.html
摘要:構(gòu)造函數(shù)注入通過調(diào)用類的構(gòu)造函數(shù),將接口實現(xiàn)類通過構(gòu)造函數(shù)變量傳入。而在中,其使用橫切技術(shù),將這類代碼從原屬的封裝對象中提取出來,封裝到一個可重用模塊中,稱為。 最近實習用到Spring的開發(fā)框架,但是之前沒有接觸過,因此希望利用網(wǎng)上的資源來學習以下。 Spring官方給出了非常全面的介紹,非常適合我這種完全的小白……在這一系列學習中,我閱讀的主要資源是5.1.2 Reference ...
摘要:的兩大核心機制是控制反轉(zhuǎn)和面向切面編程,對于初學者來講,搞清楚這兩個核心機制就掌握了的基本應用。配置對象張三添加標簽對應屬性名,是屬性的值。若包含特殊字符,比如張三,使用張三進行配置,如下所示。 前言 對于任何一個 Java 開發(fā)人員,Spring 的大名一定如雷貫耳,在行業(yè)中可謂是無人不知、無人不曉,說它是 Java 領(lǐng)域第一框架毫不為過。 showImg(https://segme...
摘要:甲乙交易活動不需要雙方見面,避免了雙方的互不信任造成交易失敗的問題。這就是的核心思想。統(tǒng)一配置,便于修改。帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建對象首先,就要提供帶參數(shù)的構(gòu)造函數(shù)接下來,關(guān)鍵是怎么配置文件了。 前言 前面已經(jīng)學習了Struts2和Hibernate框架了。接下來學習的是Spring框架...本博文主要是引入Spring框架... Spring介紹 Spring誕生: 創(chuàng)建Spring的...
摘要:使用的好處知乎的回答不用自己組裝,拿來就用。統(tǒng)一配置,便于修改。 前言 只有光頭才能變強 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡單啦 單例模式你會幾種寫法? 工廠模式理解了沒有? 在刷Spring書籍的時候花了點時間去學習了單例模式和工廠模式,總的來說還是非常值得的! 本來想的是刷完《Spring 實戰(zhàn) (第4版)》和《精通Spring4.x 企業(yè)應用開發(fā)實戰(zhàn)》...
摘要:從而能夠進一步深入了解框架。至此我們框架開發(fā)完成。雖然說閱讀源碼是了解框架的最終手段。但是框架作為一個生產(chǎn)框架,為了保證通用和穩(wěn)定,源碼必定是高度抽象,且處理大量細節(jié)。下一篇文章應該會是徒手擼框架實現(xiàn)。 原文地址:https://www.xilidou.com/2018/... Spring 作為 J2ee 開發(fā)事實上的標準,是每個Java開發(fā)人員都需要了解的框架。但是Spring 的...
閱讀 1278·2021-10-18 13:32
閱讀 2360·2021-09-24 09:47
閱讀 1339·2021-09-23 11:22
閱讀 2476·2019-08-30 14:06
閱讀 582·2019-08-30 12:48
閱讀 2012·2019-08-30 11:03
閱讀 548·2019-08-29 17:09
閱讀 2477·2019-08-29 14:10