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的相关更高级 ...
随机推荐
- CUDA ---- GPU架构(Fermi、Kepler)
GPU架构 SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的. 以Fermi架构为例,其包含以下主要组成部分: CUDA co ...
- MT【96】一道三角恒等变换题
设$a,b,c$是正数,且$(a+b)(b+c)(c+a)=8$,证明不等式:$\frac{a+b+c}{3}≥[\frac{a^3+b^3+c^3}{3}]^{\frac{1}{27}}$ 评:记住 ...
- Crash dump进程信息
linux下 比较简单,这里不在说明, windows下 相对复杂一点,用SetUnhandledExceptionFilter 来捕获 MiniDumpWriteDump 来写dmp文件,这种方法还 ...
- 【贪心策略】USACO 越野跑
问题 H: 越野跑[贪心策略] [题面] 为了能在下一次跑步比赛中有好的发挥,贝茜在一条山路上开始了她的训练.贝茜希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:奶牛独自进山的时间不得超 ...
- LCP 模板
LCP Description 给定串 \(S\) . \(m\) 组询问 \((X, Y, L, R)\): 求 \(S[X,Y]\) 与 \(S[L,R]\) 的最长公共前缀. Input 第一行 ...
- (转)Maven学习总结(四)——Maven核心概念
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(四)——Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Mav ...
- jQuery EasyUI API 中文文档 - 消息框(Messager)
http://www.cnblogs.com/Philoo/archive/2011/11/15/jeasyui_api_messager.html Messager 消息框 博客园 风流涕淌 (p ...
- Linux下使用cron让Python程序持久化运行
正常情况下,一个python程序如果希望实现一直运行,不出错不奔溃是很难的,即使编译为可持续文件也是一样 幸运的是很多需求并不是需要24小时不间断运行,而是每隔一段时间运行一次即可 Linux系统自带 ...
- Java基础-SSM之mybatis一对一关联
Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbands和wifes表并建 ...
- 支付宝APP支付,提示代码 ALIN10070
ALIN10070 此代码时ALI64代码拆分后的细分代码: 代表签名验证失败等相关问题: 如果近期修改过或者续签 过签约协议,也需要更新公私钥.