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自定义注解学习(二)_注解详解
上篇文章,我们简单的实现了一个自定义注解,相信大家对自定义注解有了个简单的认识,这篇,这样介绍下注解中的元注解和内置注解 整体图示 内置注解 @Override 重写覆盖 这个注解大家应该经常用到,主 ...
- Invalid format of Import utility nameVerify that ORACLE_HOME is properly oracle11.2g 无法imp,dmp
1.环境变量 ORACLE_HOME 设置了没 D:\app\product\11.2.0\client_1 2.环境变量 ORACLE_SID 设置为orcl 上面是网上流行的解决方案,然而博主 ...
- What is SCons?
SCons: A software construction tool What is SCons? SCons is an Open Source software construction too ...
- 七、spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制
1.安装cas-server-3.5.2 官网:https://github.com/apereo/cas/releases/tag/v3.5.2 下载地址:cas-server-3.5.2-rele ...
- coin
Decsription 数据范围:\(n<=3000,m<=300\),保证\(\forall i,\sum\limits_{j}p_{ij}=1000\) Solution 日常期望算不 ...
- webService与分布式与微服务与SOA的关系
SOA:是面向服务体系架构. webservice是SOA的一种实现技术.webservice基于两种协议:soap和rest协议.现在常用的是rest协议. web service (web 服务) ...
- logstash marking url as dead 问题解决
具体问题如下图所示: 将 INFO 信息打印大致如下所示: [2018-03-05T16:26:08,711][INFO ][logstash.setting.writabledirectory] C ...
- MySQL初始化以及客户端工具的使用
MySQL初始化以及客户端工具的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是关系型数据库 关系型数据库通常是把所有的数据都组织成二维关系.之所以称为关系型数据库是 ...
- WinFrom弹出输入框
代码上面要引用 using Microsoft.VisualBasic; 还不够,在解决方案的引用那里,也要添加引用 如此,便可打出输入框了: ,); 5个参数分别的意思: 提示信息 标题 如果用户没 ...
- js监听浏览器tab窗口切换
js监听浏览器tab窗口切换 ——IT唐伯虎 摘要:js监听浏览器tab窗口切换. if (document.hidden !== undefined) { document.addEventLis ...