Spring对象依赖关系处理
Spring中给对象属性赋值
1、通过set方法给属性注入值
2、p名称空间
3、自动装配
4、注解
编写MVCModel调用userAction
MVCModel
public class MVCModel {
ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
@Test
public void test(){
UserAction userAction = (UserAction)ac.getBean("userAction");
userAction.save();
}
}
编写UserAction 调用userService
UserAction
public class UserAction {
private UserService userService;
public void save(){
userService.save();
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
编写UserService 调用userDao
UserService
public class UserService {
private UserDao userDao;
public void save(){
userDao.save();
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
编写UserDao
UserDao
public class UserDao {
public void save(){
System.out.println("dao执行保存用户方法");
}
}
编写applicationContext
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 通过set方法给属性赋值 -->
<!-- <bean id="userDao" class="com.isoftstone.dao.UserDao"></bean>
<bean id="userService" class="com.isoftstone.service.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userAction" class="com.isoftstone.action.UserAction">
<property name="userService" ref="userService"></property>
</bean> --> <!--set方法给属性赋值的另一种形式 内部bean -->
<!-- <bean id="userAction" class="com.isoftstone.action.UserAction">
<property name="userService">
<bean id="userService" class="com.isoftstone.service.UserService">
<property name="userDao">
<bean id="userDao" class="com.isoftstone.dao.UserDao"></bean>
</property>
</bean>
</property>
</bean> --> <!-- p名称空间给对象属性注入值 spring3.0以上版本支持-->
<!-- <bean id="userDao" class="com.isoftstone.dao.UserDao"></bean>
<bean id="userService" class="com.isoftstone.service.UserService" p:userDao-ref="userDao"></bean>
<bean id="userAction" class="com.isoftstone.action.UserAction" p:userService-ref="userService"></bean> --> <!-- 自动装配 根据名称自动装配,自动去IOC容器中找与属性名同名的引用对象,并自动注入
还有一种写法是设置全局自动装配 default-autowire="byName"把这句话放在http://www.springframework.org/schema/context/spring-context.xsd"后面即可
如果是根据类型来装配必须确保容器中只有一个该类型的对象否则会报错-->
<bean id="userDao" class="com.isoftstone.dao.UserDao" autowire="byName"></bean>
<bean id="userService" class="com.isoftstone.service.UserService" autowire="byName"></bean>
<bean id="userAction" class="com.isoftstone.action.UserAction" autowire="byName"></bean>
</beans>
通过注解方式给对象属性赋值
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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 开启注解 -->
<context:component-scan base-package="com.isoftstone"></context:component-scan>
</beans>
DAO
import org.springframework.stereotype.Repository; @Repository
public class UserDao { public void save(){
System.out.println("成功调用dao保存用户方法");
}
}
Service
import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.isoftstone.dao.UserDao; @Service
public class UserService { @Resource
private UserDao userDao; public void save(){
userDao.save();
} }
Action
import javax.annotation.Resource; import org.springframework.stereotype.Controller; import com.isoftstone.service.UserService; @Controller
public class UserAction { @Resource
private UserService userService; public void save(){
userService.save();
} }
调用
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.isoftstone.action.UserAction; public class MVCModel {
ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml"); @Test
public void testIOC(){ UserAction userAction = (UserAction)ac.getBean("userAction");
userAction.save();
}
}
如果出现
Caused by: java.lang.NoClassDefFoundError: org/springframework/aop/TargetSource
那是因为没有导入aop的jar包
Spring对象依赖关系处理的更多相关文章
- Spring对象依赖关系
Spring中,如何给对象的属性赋值? [DI, 依赖注入] 1) 通过构造函数 2) 通过set方法给属性注入值 3) p名称空间 4)自动装配(了解) 5) 注解 package loade ...
- Java进阶知识18 Spring对象依赖关系的几种写法
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Spring IOC、对象依赖关系
Spring IOC.对象依赖关系 2016-09-21 01:36 414人阅读 评论(0) 收藏 举报 本文章已收录于: 版权声明:本文为博主原创文章,未经博主允许不得转载. 引入 Strut ...
- 在SQL Server中查看对象依赖关系
原文 在SQL Server中查看对象依赖关系 Viewing object dependencies in SQL Server Deleting or changing objects may ...
- Spring之对象依赖关系(依赖注入Dependency Injection)
承接上篇: Spring中,如何给对象的属性赋值: 1:通过构造函数,如下所示: <!-- 1:构造函数赋初始值 --><bean id="user1" clas ...
- Spring第三篇【Core模块之对象依赖】
前言 在Spring的第二篇中主要讲解了Spring Core模块的使用IOC容器创建对象的问题,Spring Core模块主要是解决对象的创建和对象之间的依赖关系,因此本博文主要讲解如何使用IOC容 ...
- spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...
- Spring 3.x jar 包详解 与 依赖关系
以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...
- Spring框架学习之高级依赖关系配置(一)
上篇文章我们对Spring做了初步的学习,了解了基本的依赖注入思想.学会简单的配置bean.能够使用Spring容器管理我们的bean实例等.但这还只是相对较浅显的内容,本篇将介绍bean的相关更高级 ...
随机推荐
- Java之流的分类
Java I/O流分类:
- codeforces71A
Way Too Long Words CodeForces - 71A XUPT_ACM的杨队是一个强迫症晚期的大神,他特别反感长单词,就像 "localization" 和&qu ...
- KUR-Couriers
题目链接: QwQ Solution: 以权值为下标,对每个点建树 对于x点,以它为根的树涵盖的是1到x区间内每个数出现的次数 Code: #include<bits/stdc++.h> ...
- Nginx多进程高并发、低时延、高可靠机制缓存代理中的应用
1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...
- 【BZOJ4800】[Ceoi2015]Ice Hockey World Championship (meet in the middle)
[BZOJ4800][Ceoi2015]Ice Hockey World Championship (meet in the middle) 题面 BZOJ 洛谷 题解 裸题吧,顺手写一下... #i ...
- 51nod1229 序列求和 V2 【数学】
题目链接 B51nod1229 题解 我们要求 \[\sum\limits_{i = 1}^{n}i^{k}r^{i}\] 如果\(r = 1\),就是自然数幂求和,上伯努利数即可\(O(k^2)\) ...
- LInux上返回到切换目录前的目录
在Linux系统上,切换目录用命令cd (change directory),查看当前目录的命令pwd (print working directory). 例如当前目录为:/home/keysyst ...
- node.js 开发简易的小爬虫
node.js 开发简易的小爬虫 最近公司开发一款医药类的软件,所以需要一些药品的基础数据,所以本人就用node.js写一个简易的小爬虫,并写记录这个Demo以供大家参考. 一.开发前的准备: 1, ...
- Json对象和Json字符串的区别
说白了,字符串都是带引号的. 尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串. 参考这个博客还可以: https://blog. ...
- 第一篇:打造专属开发工具Eclipse篇
第一篇:打造专属开发工具Eclipse篇 eclipse 优化 1.动画很酷,但如果可以的话,我总是在所有的工具中禁用动画.所以classic或者window classic主题是我最常用的主题 , ...