Spring IOC/DI

Spring核心 IoC/DI

IoC/DI:Inversion of Control,控制反轉 ,Dependency Injection 依賴注入
   傳統的java開發模式中,當咱們須要一個對象時,咱們本身建立一個對象出來,而在Spring中,一切都有Spring容器使用了工廠模式爲咱們建立管理須要的對象。
AOP:Aspect Oriented Programming 面向切面
   AOP是Aspect Oriented Programming的縮寫,意思是面向方面編程,而在面向切面編程中,咱們將一個對象某些相似的方面橫向抽象成一個切面,對這個切面進行一些如權限驗證,事物管理,記錄日誌等操做。
html

Bean裝配與實例化

BeanFactory和ApplicationContext就是spring框架的兩個IOC容器,如今通常使用ApplicationnContext,其不但包含了BeanFactory的做用,同時還進行更多的擴展。(官網文檔解釋)。java

The org.springframework.beans and org.springframework.context packages are the basis for Spring Framework's IoC container. The BeanFactory interface provides an advanced configuration mechanism capable of managing any type of object. ApplicationContext is a sub-interface of BeanFactory. It adds easier integration with Spring's AOP features; message resource handling (for use in internationalization), event publication; and application-layer specific contexts such as the WebApplicationContext for use in web applications.web

public interface IUserService {
    public void sayName();
}
public class UserServiceImpl implements IUserService {
    @Override
    public void sayName() {
         System.out.println("My name is Spring IOC");
    }
}
ApplicationContext contextClassPath = new ClassPathXmlApplicationContext("applicationContext.xml");
//ApplicationContext  contextFileSystem = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");
UserServiceImpl userImpl = (UserServiceImpl) contextClassPath.getBean(UserServiceImpl.class);
userImpl.sayName();

實例化Spring IOC容器的簡單方法(JDK5+ 支持泛型)
1.ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring配置文件路徑"}); 
2.(已廢棄)
Resource res = new FileSystemResource("spring配置文件");
BeanFactory factory = new XMLBeanFactory(res);
3.ApplicationContext  contextFileSystem = new FileSystemXmlApplicationContext(new String[]{"spring配置文件路徑"});
spring

Bean的XML配置編程

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="userservice" class="cn.base.web.service.impl.UserServiceImpl"></bean>
</beans>

1.一個Bean對應一個id,若是spring配置文件中有兩個以上相同的id時,spring會報錯。
2.一個Bean也能夠經過一個name屬性來引用和指定,若是spring配置文件中有兩個以上相同name的Bean,則spring經過name引用時會自動覆蓋前面相同name的bean引用。
不少時候,因爲Spring須要管理和配置的東西比較多,咱們能夠根據模塊分解開,過<import>元素將要引入的spring其餘配置文件,如
 <import resource=」spring-service.xml」/>
api

依賴注入幾種方式

相關文章
相關標籤/搜索