Spring对象依赖关系
Spring中,如何给对象的属性赋值? 【DI, 依赖注入】
1) 通过构造函数
2) 通过set方法给属性注入值
3) p名称空间
4)自动装配(了解)
5) 注解
- package loaderman.c_property;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class App {
- // 创建容器对象
- private ApplicationContext ac = new ClassPathXmlApplicationContext("loaderman/c_property/bean.xml");
- @Test
- public void testSet() {
- // 从容器中获取
- User user = (User) ac.getBean("user");
- System.out.println(user);
- }
- @Test
- public void testExecuteAction() {
- // 从容器中获取Action
- UserAction userAction = (UserAction) ac.getBean("userAction");
- userAction.execute();
- }
- }
- package loaderman.c_property;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class App_p {
- // 创建容器对象
- private ApplicationContext ac = new ClassPathXmlApplicationContext("loaderman/c_property/bean_p.xml");
- @Test
- public void testExecuteAction() {
- // 从容器中获取Action
- UserAction userAction = (UserAction) ac.getBean("userAction");
- userAction.execute();
- System.out.println(ac.getBean("user"));
- }
- }
- package loaderman.c_property;
- public class User {
- private int id;
- private String name;
- ////////////////// --> 通过容器注入属性值
- public void setId(int id) {
- this.id = id;
- }
- // //--> 通过容器注入属性值
- public void setName(String name) {
- this.name = name;
- }
- ////////////////
- public int getId() {
- return id;
- }
- public String getName() {
- return name;
- }
- @Override
- public String toString() {
- return "User [id=" + id + ", name=" + name + "]";
- }
- public User() {
- super();
- System.out.println("------User对象创建【无参数构造器】------");
- }
- public User(int id, String name) {
- System.out.println("-----User对象创建【带参数构造器】--------");
- this.id = id;
- this.name = name;
- }
- public void init_user() {
- System.out.println("创建对象之后,初始化");
- }
- public void destroy_user() {
- System.out.println("IOC容器销毁,user对象回收!");
- }
- }
- package loaderman.c_property;
- public class UserAction {
- // Service: springIOC容器注入
- private UserService userService;
- public void setUserService(UserService userService) {
- this.userService = userService;
- }
- public String execute() {
- userService.save();
- return null;
- }
- }
- package loaderman.c_property;
- public class UserDao {
- public void save() {
- System.out.println("DB:保存用户");
- }
- }
- package loaderman.c_property;
- public class UserService {
- private UserDao userDao; // = new UserDao();
- // IOC:对象的创建交给spring的外部容器完成
- public void setUserDao(UserDao userDao) {
- this.userDao = userDao;
- }
- public void save() {
- userDao.save();
- }
- }
- <?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">
- <!-- ###############对象属性赋值############### -->
- <!-- 1) 通过构造函数 -->
- <bean id="user1" class="loaderman.c_property.User" scope="prototype">
- <constructor-arg value="100"></constructor-arg>
- <constructor-arg value="Tom"></constructor-arg>
- </bean>
- <!-- 2) 通过set方法给属性注入值 -->
- <bean id="user" class="loaderman.c_property.User" scope="prototype">
- <property name="id" value="101"></property>
- <property name="name" value="Jack"></property>
- </bean>
- <!--
- 案例:
- action/service/dao
- -->
- <!-- dao instance -->
- <bean id="userDao" class="loaderman.c_property.UserDao"></bean>
- <!-- service instance -->
- <bean id="userService" class="loaderman.c_property.UserService">
- <property name="userDao" ref="userDao"></property>
- </bean>
- <!-- action instance -->
- <bean id="userAction1" class="loaderman.c_property.UserAction">
- <property name="userService" ref="userService"></property>
- </bean>
- <!-- ##############内部bean############## -->
- <bean id="userAction2" class="loaderman.c_property.UserAction">
- <property name="userService">
- <bean class="loaderman.c_property.UserService">
- <property name="userDao">
- <bean class="loaderman.c_property.UserDao"></bean>
- </property>
- </bean>
- </property>
- </bean>
- <!--
- 给对象属性注入值:
- # p 名称空间给对象的属性注入值
- (spring3.0以上版本才支持)
- -->
- </beans>
- <?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">
- <!-- ###############对象属性赋值############### -->
- <!--
- 给对象属性注入值:
- # p 名称空间给对象的属性注入值
- (spring3.0以上版本才支持)
- -->
- <bean id="userDao" class="loaderman.c_property.UserDao"></bean>
- <bean id="userService" class="loaderman.c_property.UserService" p:userDao-ref="userDao"></bean>
- <bean id="userAction" class="loaderman.c_property.UserAction" p:userService-ref="userService"></bean>
- <!-- 传统的注入:
- <bean id="user" class="cn.loaderman.c_property.User" >
- <property name="name" value="xxx"></property>
- </bean>
- -->
- <!-- p名称空间优化后 -->
- <bean id="user" class="loaderman.c_property.User" p:name="Jack0001"></bean>
- </beans>
Spring对象依赖关系的更多相关文章
- Spring对象依赖关系处理
Spring中给对象属性赋值 1.通过set方法给属性注入值 2.p名称空间 3.自动装配 4.注解 编写MVCModel调用userAction MVCModel public class MVCM ...
- 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的相关更高级 ...
随机推荐
- JS__POST
RSA加密 熟悉的东西 public key Encrypt (函数) 而且 每次刷新都会变化() 一般 128 位,也有 256位的
- JavaSpring【二、IOC】
概述: 接口及面向接口编程 接口:用于沟通的中介物的抽象,实体把自己提供给外界的方法的抽象化说明,将声明和实现分离,使其能够改变内部而不影响与外部的交互方式 面向接口编程:在结构设计中,分清层次及调用 ...
- Django—model系统:ORM对数据库操作
基本操作 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs): ...
- Vue介绍:vue导读3
一.全局组件 二.父组件传递信息给子组件 三.子组件传递信息给父组件 四.vue项目开发 一.全局组件 <body> <!-- 两个全局vue实例可以不用注册全局组件,就可以使用 - ...
- web开发:形变、表格及多行文本操作
一.2d形变 二.动画 三.表格 四.多个文本垂直居中 五.小米形变案例 一.2d形变 /*1.形变参考点: 三轴交界点*/transform-origin: x轴坐标 y轴坐标; /*2.旋转 ro ...
- Sublime text3安装
一.Sublime text3下载 [20190506]下载 官网下载:https://www.sublimetext.com/ https://download.sublimetext.com/Su ...
- [Abp vNext微服务实践] - 启动流程
前几篇分别介绍了abp vNext微服务框架和微服务CI/CD环境搭建,本篇开始介绍vNext微服务框架的开发环境搭建. 环境准备 官方介绍的系统架构图如下: 上图中身份服务和网关服务已经集成在系统中 ...
- PAT Basic 1072 开学寄语 (20 分)
下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过.读书.锻炼.明智. ...
- 前端自动化构建工具 Webpack——3 webpack配置文件的使用
- Java入门第二季——Java中的this关键字
如果想访问一个private属性,通常会使用setter和getter方法来操作属性,属性名经常会与参数名相同,我们为了区分属性和参数的概念,我们会在属性前面加上this关键字,此时代表我将一个参数的 ...