Spring框架和IOC容器是什么

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Spring框架和IOC容器是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、肅寧網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為肅寧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、Spring開源框架的簡(jiǎn)介

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

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

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

Spring框架和IOC容器是什么

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

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

??IOC容器:就是具有依賴注入功能的容器,是可以創(chuàng)建對(duì)象的容器,IOC容器負(fù)責(zé)實(shí)例化、定位、配置應(yīng)用程序中的對(duì)象及建立這些對(duì)象間的依賴。通常new一個(gè)實(shí)例,控制權(quán)由程序員控制,而"控制反轉(zhuǎn)"是指new實(shí)例工作不由程序員來做而是交給Spring容器來做。。在Spring中BeanFactory是IOC容器的實(shí)際代表者。

??DI(依賴注入Dependency injection) :在容器創(chuàng)建對(duì)象后,處理對(duì)象的依賴關(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。程式運(yùn)行時(shí)候,會(huì)將已經(jīng)實(shí)例化的orderService對(duì)象調(diào)用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、構(gòu)造器注入方式:

控制層代碼:

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;

?服務(wù)層代碼:

@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 {...}

?注意點(diǎn):

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

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

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

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

⑷ 注解可以簡(jiǎn)化配置,提升開發(fā)效率,但是也不利于后期維護(hù)。

注:@Autowired與@Resource的區(qū)別

上述就是小編為大家分享的Spring框架和IOC容器是什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前題目:Spring框架和IOC容器是什么
分享鏈接:http://bm7419.com/article18/ijppgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站維護(hù)網(wǎng)站導(dǎo)航、域名注冊(cè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管