今天給你們介紹一下 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