成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Spring框架IOC容器

CoderStudy / 679人閱讀

摘要:簡單來說,是一個輕量級的控制反轉(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è)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。

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

??spring的基本框架主要包含六大模塊:DAOORM、AOPJEE、WEBCORE。

  

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提供面向切面的編程,可以給某一層提供事務(wù)管理,例如在Service層添加事物控制 。
Spring JEE:J2EE開發(fā)規(guī)范的支持,例如EJB 。
Spring Core:提供IOC容器對象的創(chuàng)建和處理依賴對象關(guān)系 。

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

??IOC容器:就是具有依賴注入功能的容器,是可以創(chuàng)建對象的容器,IOC容器負(fù)責(zé)實例化、定位、配置應(yīng)用程序中的對象及建立這些對象間的依賴。通常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;

?服務(wù)層代碼:

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

    @Autowired
    private JavaOrderMDaoImp javaOrderMDao;

    @Autowired
    private JavaOrderDDaoImp javaOrderDDao;

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

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

}

?DAO層代碼:

@Repository("javaOrderMDao")
public class JavaOrderMDaoImp extends BaseHibernateDAO implements IJavaOrderMDao {...}
@Repository("javaOrderDDao")
public class JavaOrderDDaoImp extendsBaseHibernateDAO implements IJavaOrderDDao {...}

?注意點:

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

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

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

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

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/71763.html

Failed to recv the data from server completely (SIZE:0/8, REASON:closed)