Spring的依赖注入(基于XML)
2015-09-18 22:50
387 查看
项目结构图
代码
User.javapackage org.spring.bean; public class User { private int id; private String name; public User() { } public User(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "id="+id+", name="+name; } }
UserDAOInter.java
package org.spring.dao.inter; import org.spring.bean.User; public interface UserDAOInter { public void add(User user); public void delete(int id); public User load(int id); }
UserDAOImpl.java
package org.spring.dao.impl; import org.spring.bean.User; import org.spring.dao.inter.UserDAOInter; public class UserDAOImpl implements UserDAOInter { @Override public void add(User user) { System.out.println("添加了用户:"+user); } @Override public void delete(int id) { System.out.println("删除了用户:"+id); } @Override public User load(int id) { System.out.println("加载了用户:"+id); return null; } }
UserServiceInter.java
package org.spring.service.inter; import org.spring.bean.User; public interface UserServiceInter { public void add(User user); public void delete(int id); public User load(int id); }
UserServiceImpl.java
package org.spring.service.impl; import org.spring.bean.User; import org.spring.dao.impl.UserDAOImpl; import org.spring.service.inter.UserServiceInter; public class UserServiceImpl implements UserServiceInter { private UserDAOImpl userDAOImpl; public UserDAOImpl getUserDAOImpl() { return userDAOImpl; } public void setUserDAOImpl(UserDAOImpl userDAOImpl) { this.userDAOImpl = userDAOImpl; } @Override public void add(User user) { userDAOImpl.add(user); } @Override public void delete(int id) { userDAOImpl.delete(id); } @Override public User load(int id) { return userDAOImpl.load(id); } }
UserAction.java
package org.spring.action; import java.util.List; import org.spring.bean.User; import org.spring.service.impl.UserServiceImpl; public class UserAction { private User user; private UserServiceImpl userServiceImpl; private int id; private List<String> names; // public UserAction(UserServiceImpl userServiceImpl) { // this.userServiceImpl = userServiceImpl; // } public User getUs 4000 er() { return user; } public void setUser(User user) { this.user = user; } public UserServiceImpl getUserServiceImpl() { return userServiceImpl; } public void setUserServiceImpl(UserServiceImpl userServiceImpl) { this.userServiceImpl = userServiceImpl; } public int getId() { return id; } public void setId(int id) { this.id = id; } public List<String> getNames() { return names; } public void setNames(List<String> names) { this.names = names; } public void add(){ System.out.println(names); userServiceImpl.add(user); } public void delete(){ userServiceImpl.delete(id); } public void load(){ userServiceImpl.load(id); } }
beans.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName"> --> <!-- 指定整个配置文件的自动注入方式 --> <!-- 属性值的注入,使用value而不是ref --> <bean name="user" class="org.spring.bean.User"> <property name="id" value="2"/> <property name="name" value="八戒"/> </bean> <bean id="userDAOImpl" class="org.spring.dao.impl.UserDAOImpl"/> <bean id="userServiceImpl" class="org.spring.service.impl.UserServiceImpl"> <!-- name="userDAOImpl"表示具体注入时会调用userServiceImpl对象的setUserDAOImpl()方法来完成注入 --> <!-- ref="userDAOImpl"表示注入的对象是配置文件中的id为userDAOImpl的对象 --> <property name="userDAOImpl" ref="userDAOImpl"/> </bean> <!-- 对于UserAction,里面的属性会根据不同的线程得到不同的值,所以应该用多例(默认是单例) --> <bean id="userAction" class="org.spring.action.UserAction" scope="prototype"> <property name="user" ref="user"/> <property name="userServiceImpl" ref="userServiceImpl"/> <property name="id" value="1"/> <property name="names"> <list> <value>张三</value> <value>李四</value> <value>王五</value> <value>赵六</value> </list> </property> </bean> <!-- 通过构造函数完成注入,需要传入构造函数的参数(不常用) --> <!-- <bean id="userAction" class="org.spring.action.UserAction" scope="prototype"> <constructor-arg ref="userServiceImpl"/> </bean> --> <!-- 以byName的方式完成自动注入(对类的依赖对象不能一目了然,不常用) --> <!-- byName的工作原理:根据类中依赖对象的名称调用相应的setter方法完成注入,注入的对象是配置文件中id为依赖对象名称的对象 --> <!-- <bean id="userServiceImpl" class="org.spring.service.impl.UserServiceImpl" autowire="byName"/> --> </beans>
Test.java
package org.spring.test; import org.spring.action.UserAction; import org.spring.model.User; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { private BeanFactory factory=new ClassPathXmlApplicationContext("xml/beans.xml"); @org.junit.Test public void test01() { UserAction userAction1=factory.getBean("userAction", UserAction.class); userAction1.add(); userAction1.delete(); System.out.println("*********************************************"); UserAction userAction2=factory.getBean("userAction", UserAction.class); User user=new User(1,"悟空"); userAction2.setUser(user); userAction2.setId(10); userAction2.add(); userAction2.delete(); } }
结果图
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- java实现简单美女拼图游戏
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- 基于Spring框架的Shiro配置方法
- Spring MVC中上传文件实例
- 实例讲解Java的Spring框架中的AOP实现
- 解析Java中如何获取Spring中配置的bean
- Spring的注解配置与XML配置之间的比较
- java Spring整合Freemarker的详细步骤
- Java 二维码,QR码,J4L-QRCode 的资料整理
- java当中的定时器的4种使用方式
- java中 spring 定时任务 实现代码