深入学习Spring IOC和AOP 实例代码
这次主要是通过Spring官网的文档学习,使用的代码也是官网提供的代码,并且把代码放到本地运行和学习,博客记录一下学习心得.
官网文档地址:
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-basics
IOC
- IOC控制反转, 当一个了类需要注入其他类的对象的时候, 对象不需要自己手动创建引用类的对象, 执行需要从Spring IOC 容器获取,把创建对象的控制权交给容器.
- BeanFactory 接口提供了对象信息的配置, 开发者可以通过这个接口获取对象, ApplicationContext是BeanFactory的子类, 提供了更多的功能,所以一般情况,我们都使用ApplicationContext.
Configuration Metadata
我们可以在XML中定义对象的信息, spring 3.0开始 可以采用java注解的方式实现Spring IOC的元数据定义. 目前最受欢迎的方式是采用java 注解的方式.
XML方式配置元数据演示
源码地址:
https://gitee.com/bseaworkspace/study_java_web/tree/master/springDemo
代码结构
代码的使用
执行com.xsz.AppConfig的main方法,如果控制台中看到如下信息,表示我们从IOC容器中成功获取到了对象.
代码解释
ApplicationContext有不同的实现类, 如果我们把类信息配置在xml,那么可以实现ClassPathXmlApplicationContext 对象来获取IOC容器.
package com.xsz;import com.xsz.services.PetStoreService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;
@SpringBootApplication
public class AppConfig {public static void main(String[] args) {// create and configure beansApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");// retrieve configured instancePetStoreService service = context.getBean("petStore", PetStoreService.class);// use configured instanceList<String> userList = service.getUsernameList();System.out.println(userList);SpringApplication.run(AppConfig.class, args);}}
src\main\resources\daos.xml
一个 "<bean"就是配置一个类,把这个类的创建控制交给spring ioc 容器.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="accountDao"class="com.xsz.dao.JpaAccountDao"><!-- additional collaborators and configuration for this bean go here --></bean><bean id="itemDao" class="com.xsz.dao.JpaItemDao"><!-- additional collaborators and configuration for this bean go here --></bean><!-- more bean definitions for data access objects go here --></beans>
这个类有两个属性的数据类型是其他的类, 可以在配置文件中设置, 这里一定要注意,这两个属性要有get,set方法.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!-- services --><bean id="petStore" class="com.xsz.services.PetStoreServiceImpl"><property name="accountDao" ref="accountDao"/><property name="itemDao" ref="itemDao"/><!-- additional collaborators and configuration for this bean go here --></bean><!-- more bean definitions for services go here --></beans>
PetStoreServiceImpl 类中,添加了get,set方法.
package com.xsz.services;import com.xsz.dao.JpaAccountDao;
import com.xsz.dao.JpaItemDao;import java.util.Arrays;
import java.util.List;public class PetStoreServiceImpl implements PetStoreService {public JpaAccountDao accountDao;public JpaItemDao itemDao;@Overridepublic List<String> getUsernameList() {return Arrays.asList("张三","李四","周瑜");}public JpaAccountDao getAccountDao() {return accountDao;}public void setAccountDao(JpaAccountDao accountDao) {this.accountDao = accountDao;}public JpaItemDao getItemDao() {return itemDao;}public void setItemDao(JpaItemDao itemDao) {this.itemDao = itemDao;}
}
深入学习Spring IOC和AOP 实例代码相关推荐
- 自己动手实现的 Spring IOC 和 AOP - 上篇
1. 背景 我在大四实习的时候开始接触 J2EE 方面的开发工作,也是在同时期接触并学习 Spring 框架,到现在也有快有两年的时间了.不过之前没有仿写过 Spring IOC 和 AOP,只是宏观 ...
- 【Spring 源码阅读】Spring IoC、AOP 原理小总结
Spring IoC.AOP 原理小总结 前言 版本约定 正文 Spring BeanFactory 容器初始化过程 IoC 的过程 bean 完整的创建流程如下 AOP 的过程 Annotation ...
- 浅谈 Spring IOC和AOP
浅谈 Spring IOC和AOP IOC 控制反转 以前创建对象的主动权和时机是由于自己把握的,现在将这种权利转移到Spring容器中,并且根据配置文件去创建对象管理对象 ioc的注入方式有三种:构 ...
- 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事
AOP 概述 什么是 AOP AOP:全称是 Aspect Oriented Programming 即:面向切面编程 AOP 的作用及优势 作用: 在程序运行期间,不修改源码对已有方法进 ...
- 自己动手实现的 Spring IOC 和 AOP - 下篇
1. 背景 本文承接上文,来继续说说 IOC 和 AOP 的仿写.在上文中,我实现了一个很简单的 IOC 和 AOP 容器.上文实现的 IOC 和 AOP 功能很单一,且 IOC 和 AOP 两个模块 ...
- Spring IoC 和 AOP
Spring IoC 和 AOP spring框架java开发的行业标准. spring全家桶. Web:Spring Web MVC/Spring MVC,Spring Web Flux 持久层:S ...
- 简述Spring IOC 和 AOP
大家好,我是Morning,在CSDN写文,分享一些Java基础知识,一些自己认为在学习过程中比较重要的东西,致力于帮助初学者入门,希望可以帮助你进步.感兴趣的欢迎关注博主,和博主一起学习Java知识 ...
- Spring IOC 和 AOP 概览
IOC(控制反转) IoC(Inversion of Control,控制倒转).所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系. 在没有IOC时,我们 ...
- 吊打面试官系列之--吃透Spring ioc 和 aop (中)
目录 Spring SpringBean的五个作用域 SpringBean的生命周期 创建过程 销毁过程 AOP的介绍和使用 AOP的介绍 AOP的三种织入方式 操作讲解 AOP的主要名词概念 Adv ...
- Spring:IOC与AOP
目录 一.Spring简介 1.Spring 2.spring优势 二.IOC 1.概念和原理 2.自定义IOC容器 1.需求 2.实现 3.Spring相关的API 3.1 图解编辑 3.2.Be ...
最新文章
- URI URL 简介区别
- Jscript 内部对象
- 源码安装mysql主从_mysql源码安装和主从同步配置
- Java双等号,Equals(),HashCode()小结
- vue 移动到图片浮动_基于Vue实现拖拽升级(九宫格拖拽)
- JS基础02之流程控制语句
- SQL Server 的本地时间和UTC时间
- PIL修改带有透明像素的png图片颜色
- Ajax请求中的Redirect()
- 2018年3月11日论文阅读
- 计算机二级题库access选择题_计算机二级access选择题题库
- cad vba 打开文件对话框_CADvba开发手册.doc
- java计算机毕业设计BS景区票务管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
- java excel 冻结_Java 冻结、解除冻结 Excel 的行和列
- python-数据分析-pandas
- 带你用 Python 实现自动化群控(入门篇)
- 高德地图 缩放级别(Zoom) 和 比例尺(scale)之间 的关系
- 脂多糖(LPS) 来源于肠炎沙门氏菌, S-型解决方案
- [转]60个英文阅读网站强力推荐
- java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...
热门文章
- Excel中的相对引用和绝对引用详解
- [Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
- 拼音表大全图_阿波罗 STM32F767 开发板资料连载第五十九章 T9 拼音输入法实验
- python画满天星_跟我学解Python题-海龟制图满天星
- supermicro board bios 升级 超微主板刷 bios
- JGIT使用的常见问题
- 寄存器与七种寻址方式
- 免费c++图片操作库(类)
- 在java语言中所有类都是,【填空题】(10-1)Java语言中,( )是所有 类的祖先类。
- 计算飞机票价格python_Python 带你薅羊毛:手把手教你揪出特价机票信息