Spring的核心api和兩種實例化方式


一.spring的核心api

Spring有如下的核心api

BeanFactory :這是一個工廠,用於生成任意bean。采取延遲加載,第一次getBean時才會初始化Bean

ApplicationContext:是BeanFactory的子接口,功能更強大。(國際化處理、事件傳遞、Bean自動裝配、各種不同應用層的Context實現)。當配置文件被加載,就進行對象實例化。

ClassPathXmlApplicationContext 用於加載classpath(類路徑、src)下的xml,加載xml運行時位置 --> /WEB-INF/classes/...xml

FileSystemXmlApplicationContext 用於加載指定盤符下的xml,加載xml運行時位置 --> /WEB-INF/...xml,通過java web ServletContext.getRealPath() 獲得具體盤符

二.spring的兩種實例化方式

1.使用ApplicationContext方式進行加載

2.使用BeanFactory方式進行加載

第一步 建立Spring工程,並向其中導入必須的jar包

第二步 建立BookDao接口,BookDaoImpl實現類,BookService接口,BookServiceImpl實現類

package com.zk.myspring;

public interface BookDao {
	public void addBook();
}
package com.zk.myspring;

public class BookDaoImpl implements BookDao{

	@Override
	public void addBook() {
		// TODO Auto-generated method stub
		System.out.println("addBook");
	}

}
package com.zk.myspring;

public interface BookService {
	public abstract void addBook();
}
package com.zk.myspring;

public class BookServiceImpl implements BookService{

	//方式一:接口等於實現類
	//private BookDao bookDao=new BookDaoImpl();
	//方式二:接口+set方法
	private BookDao bookdao;
	
	//BookService依賴注入 BookDao
	public void setBookdao(BookDao bookdao) {//依賴注入
		this.bookdao = bookdao;
	}

	@Override
	public void addBook() {
		// TODO Auto-generated method stub
		//this.bookdao.addBook();
		System.out.println("add book");
	}
}

第三步 創建一個ApplicationContext.xml文件,並在文件中配置BookDao和BookService的bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<!-- 創建Dao -->
<!-- 模擬spring執行過程
創建Service實例:BookService bookservice=new BookServiceImpl();  IOC <bean>
創建Dao實例:BookDao bookDao=new BookDaoImpl();   IOC
將dao設置給service:bookservice.setBookDao(bookDao);    DI  <property>

<property> 用於屬性注入
name:bean的屬性名,通過setter方法獲得
ref:另一個bean的id值的引用
 -->
<!--創建Dao  -->
<bean id="bookDaoId" class="com.zk.myspring.BookDaoImpl" ></bean>
<!-- 創建service 依賴注入bookdaoId-->
<bean id="bookServiceId" class="com.zk.myspring.BookServiceImpl">
<property name="bookdao" ref="bookDaoId"></property>
</bean>
</beans>

  

最后一步 使用兩種方式實例化bean,我們可以使用ApplicationContext和BeanFactory分別實例化Bean

package com.zk.myspring;

import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

public class TestBook {
	public static void main(String[]args)
	{
		//從spring容器中獲得
		String path="ApplicationContext.xml";
		ApplicationContext ac=new ClassPathXmlApplicationContext(path);
		BookService bs=(BookService) ac.getBean("bookServiceId");
		bs.addBook();
	}
	@Test
	public void test1(){
		//使用BeanFactory實例化
		String path="ApplicationContext.xml";
		BeanFactory bf=new XmlBeanFactory(new ClassPathResource(path));
		BookService bs=(BookService) bf.getBean("bookServiceId");
		bs.addBook();
	}
}

分別運行兩個實例

ApplicationContext運行結果

BeanFactory運行結果

成功

三.自定義工廠

新建一個Spring_003 工程,並加入MyBeanFactory.java、TestBeanFactory.java、UserService.java、UserServiceImpl.java

MyBeanFactory表示自定義工廠

package com.zk.BeanFactory;

public class MyBeanFactory {
	public static UserService createService(){
		return new UserServiceImpl();
	}
}

UserService.java

package com.zk.BeanFactory;

public interface UserService {
	public void addUser();
}

UserServiceImpl.java

package com.zk.BeanFactory;

public class UserServiceImpl implements UserService{

	@Override
	public void addUser() {
		// TODO Auto-generated method stub
		System.out.println("UserService");
	}

}

配置ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userservice" class="com.zk.BeanFactory.UserServiceImpl"></bean>
<!--  <bean id="user" class="com.zk.BeanFactory.User"></bean>-->
</beans>

最后寫一個TestBeanFactory.java文件

package com.zk.BeanFactory;

import org.junit.Test;


public class TestBeanFactory {
	@Test
	public void Demo(){
		UserService userservice=MyBeanFactory.createService();
		userservice.addUser();
	}
}

執行結果

success

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM