spring 基本注入

今天給你們介紹一下  spring 簡單的類的注入,使用簡單的注入須要導入以下jar包java

咱們須要準備一些java類,個人類文件結構是這樣的 web

下面是一些 spring 配置文件加載和注入時所須要的一些配置文件的類信息,可快速瀏覽,主要對照下面的 spring 配置文件中的配置項目來看。spring

package controller;

import service.UserSerivce;

public class UserController {

    /**
     * 在controller類中須要一個service
     **/
	public UserSerivce userService;

	public void setUserService(UserSerivce userService) {
		this.userService = userService;
	}
	
}
package service;

public interface UserSerivce {

}
package service.impl;

import dao.UserDao;
import service.UserSerivce;

public class UserSerivceImpl implements UserSerivce{
    
    /**
     * 在service中須要一個Dao
     **/
	public UserDao userDao;

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
}
package dao;

/**
* UserHibernateImpl
* UserJDBCImpl
* UserMybatisImpl
* 上面這Dao實現了 UserDao
**/
public interface UserDao {

}
package dao.imp;

import dao.UserDao;

public class UserMybatisImpl implements UserDao{

}
package dao.imp;

import dao.UserDao;

public class UserJDBCImpl implements UserDao{

}
package dao.imp;

import dao.UserDao;

public class UserHibernateImpl implements UserDao{

}
package factory;

import dao.UserDao;
import dao.imp.UserHibernateImpl;
import dao.imp.UserJDBCImpl;
import dao.imp.UserMybatisImpl;

/**
* 由DaoFactory這個Dao工廠來建立 具體的Dao
**/
public class DaoFactory {
  
    /**
     * 靜態方法建立Dao
     **/
	public static UserDao buildDaoOne(String build) {
		UserDao userDao = null;
		if(build == "jdbc") {
			userDao = new UserJDBCImpl();
		}
		if(build == "mybatis") {
			userDao = new UserMybatisImpl();
		}
		if(build == "hibernate") {
			userDao = new UserHibernateImpl();
		}
		
		return userDao;
	}
	
    /**
     * 非靜態方法建立Dao
     **/
	public UserDao buildDaoTwo(String build) {
		UserDao userDao = null;
		if(build == "jdbc") {
			userDao = new UserJDBCImpl();
		}
		if(build == "mybatis") {
			userDao = new UserMybatisImpl();
		}
		if(build == "hibernate") {
			userDao = new UserHibernateImpl();
		}
		
		return userDao;
	}
	
}

敲黑板重點來了,spring配置項目編程

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	
	<!-- spring來管理一個簡單的類  -->
	<bean id="user" class="controller.UserController">
		<!-- 須要注入一個參數  userService -->
		<!-- 一個property至關於一個 set方法  name所指定的是set方法的參數 ref 所指定的是參數的值  -->
		<property name="userService" ref="userService"></property>
	</bean>
	
	<!-- 被spring管理的 userService  -->
	<bean id="userService" class="service.impl.UserSerivceImpl">
		<!-- 須要一個 userDao -->
		<property name="userDao" ref="userDaoOne"></property>
	</bean>
	
	<!-- 使用Dao工廠建立一個 Dao 直接在class上面 指定的 factory-method 方法必須是靜態方法-->
	<bean id="userDaoOne" class="factory.DaoFactory" factory-method="buildDaoOne">
		<!-- 所注入的參數 index 表示參數的位置,0表示第一個參數 value 表示參數的值 多個參數須要使用多個 constructor-arg 注入 -->
		<constructor-arg index="0" value="jdbc"></constructor-arg>
	</bean>
	
	<!-- 使用spring 管理一個類,這個類是一個簡單的工廠類(也可能只是一個普通的類) -->
	<bean id="factory" class="factory.DaoFactory"></bean>
	
	<!-- 使用factory-bean標明一個工廠類  使用factory-method 標明一個工廠方法,這個方法能夠不是靜態的 --> 
	<bean id="userDaoTwo" factory-bean="factory" factory-method="buildDaoTwo">
		<!-- 一樣的注入方法的參數 -->
		<constructor-arg index="0" value="mybatis"></constructor-arg>
	</bean>
	
</beans>

下面是對該配置文件進行測試的類,裏面有spring 加載方式的一些說明。mybatis

package springbasics;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import controller.UserController;

/**
 * 主要在此類中測試spring的各項功能
 * @author 王勃
 *
 */
public class SpringTest {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		/**
		 * ApplicationContext 表示Spring容器的一個實例
		 * spring 加載bean容器的方式有 多 種
		 * 其中ClassPathXmlApplicationContext(),FileSystemXmlApplicationContext()適用於以XML格式提供配置元數據的獨立應用程序
		 * 其中XmlWebApplicationContext()適用於以xml格式提供配置元數據的Web應用程序
		 * 其中 XmlPortletApplicationContext適用於經過java代碼以編程的方式提供配置元數據的web應用程序
		 */
		ApplicationContext context = new ClassPathXmlApplicationContext("spring-application.xml");
		UserController user = (UserController) context.getBean("user");
		System.out.println(user);
		
	}	
	
	
}

在該測試項目中只須要驗證  UserController 類是否正確建立。理由是,在建立 UserController 時spring須要建立一個正確的 userService 注入到 UserController 類中,在建立 userService  時咱們又須要建立一個正確的 UserDao 注入到 userService  中,因此spring的建立順序應該是 UserDao --> userService  -->UserController 因此咱們只須要建立一個 UserController 驗證這個 controller 是否正確便可。app

相關文章
相關標籤/搜索