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的相关更高级 ...
随机推荐
- 苹果手机input框上方有一条阴影线以及input框的placeholder颜色的设置
今天做手机端的时候,用到input框来输入手机号码,但是在安卓手机上input的效果是正常的,在苹果手机上,input的上边框会变粗,有阴影 因为苹果手机的默认给input加上了阴影 给input加入 ...
- java学习二 数据类型自动提升 0x开头的数据是 16进制且是int型
变量只能定义一次,不能定义两次, 变量的作用域:当前的大括号与子括号才有效 变量的作用:存储值,取值 整型:向上自动升级,向下强制降级 char,byte,shot参与运算时候自动提升为int型 因为 ...
- 【BZOJ4883】棋盘上的守卫(最小生成树)
[BZOJ4883]棋盘上的守卫(最小生成树) 题面 BZOJ 题解 首先\(n\)行\(m\)列的棋盘显然把行列拆开考虑,即构成了一个\(n+m\)个点的图.我们把格子看成边,那么点\((x,y)\ ...
- BZOJ 百题纪念!
一百题辣! 现在NOI知识点中最基础的那部分已经学完了--这几天发现自己会写SA啊树剖啊可持久化Trie啊之类模板题--还挺开心的-- 逛了两天学长博客之后--BZOJ100题辣--也挺开心的-- 现 ...
- 各种蕴含算法思想的DP - 1
study from: https://www.cnblogs.com/flashhu/p/9480669.html 1.前缀和 https://www.luogu.org/problemnew/sh ...
- 以Java的视角来聊聊BIO、NIO与AIO的区别?
转: 以Java的视角来聊聊BIO.NIO与AIO的区别? 飞丫玲丫 17-07-2623:10 题目:说一下BIO/AIO/NIO 有什么区别?及异步模式的用途和意义? BIO(Blocking I ...
- POJ - 1753 Flip Game(状压枚举)
https://vjudge.net/problem/POJ-1753 题意 4*4的棋盘,翻转其中的一个棋子,会带动邻接的棋子一起动.现要求把所有棋子都翻成同一种颜色,问最少需要几步. 分析 同一个 ...
- alloffthelights使用方法
官网上的demo没有用,因为官网用的jquery是谷歌的CDN,download下来的demo也没有用,因为demo的路径下少了jquery.所以自己写demo的时候要把jquery和alloffth ...
- 基于序列化技术(Protobuf)的socket文件传输
好像好久都没更博文了,没办法,最近各种倒霉事情,搞到最近真的没什么心情,希望之后能够转运吧. 言归正传,这次我要做的是基于序列化技术的socket文件传输来无聊练一下手. 一.socket文件传输 之 ...
- Repeater控件的分页实现
本文讲解Repeater控件与PagedDataSource相结合实现其分页功能.PagedDataSource 类封装那些允许数据源控件(如 DataGrid.GridView)执行分页操作的属性. ...