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的相关更高级 ...
随机推荐
- delphi clientdataset判断某一行值是否存在
ClientDataSet的数据查找.我所介绍的心得和技巧都是用ClientDataSet来做范例,也可以应用于其他的一些DataSet.废话就不多说了.我们还是先看代码,让后再总结.1.Scanni ...
- Make Palindrome CodeForces - 600C(思维)
A string is called palindrome if it reads the same from left to right and from right to left. For ex ...
- Spring Shell介绍
最近开发中在下遇到了spring-shell开发工具的项目,现在整理了相关文章,以供大家学习 本博客相关的文章均是在Spring Shell 1.2.0的基础上建立 Spring Shell介绍 ...
- 安装windows 2003iso 步骤
参考:http://www.2cto.com/os/201303/192509.html u盘winpe下安装windows server 2003 一.准备和资源需求 1.U盘,内置WinPE ...
- 【题解】Luogu P2047 社交网络总结 (Floyd算法,最短路计数)
题目描述 在社交网络(social network)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系.我 们将这个关系网络对 ...
- 【Revit API】创建工作集并将element加入工作集中
话不多说,直接上代码! public class WorkSetHelper { public void AddElementsToWorkSet(Document doc, List<Elem ...
- HGOI20180815 (NOIP 提高组模拟赛 day2)
Day 2 rank 11 100+35+30=165 本题是一道数论题,求ax+by=c的正整数对(x,y) x>=0并且y>=0 先说下gcd: 求a,b公约数gcd(a,b) 如gc ...
- How to 对拍?
对拍从数学的统计学角度来说是一个好的方法,至少能在你竞赛中帮你拿回一些分--yzr大牛pas的对拍一开始还没写过,突然想学一下对拍.那么就学吧.dp水题(搜索):https://www.luogu.o ...
- 洛谷P3862 8月月赛B
https://www.luogu.org/problemnew/show/P3862#sub P3862 8月月赛B 推公式:f(n)->f(n+1) 奇葩的预处理 https://www.l ...
- SQL Server优化的方法
SQL Server优化的方法<一> 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了 ...