这次主要是通过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 实例代码相关推荐

  1. 自己动手实现的 Spring IOC 和 AOP - 上篇

    1. 背景 我在大四实习的时候开始接触 J2EE 方面的开发工作,也是在同时期接触并学习 Spring 框架,到现在也有快有两年的时间了.不过之前没有仿写过 Spring IOC 和 AOP,只是宏观 ...

  2. 【Spring 源码阅读】Spring IoC、AOP 原理小总结

    Spring IoC.AOP 原理小总结 前言 版本约定 正文 Spring BeanFactory 容器初始化过程 IoC 的过程 bean 完整的创建流程如下 AOP 的过程 Annotation ...

  3. 浅谈 Spring IOC和AOP

    浅谈 Spring IOC和AOP IOC 控制反转 以前创建对象的主动权和时机是由于自己把握的,现在将这种权利转移到Spring容器中,并且根据配置文件去创建对象管理对象 ioc的注入方式有三种:构 ...

  4. 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事

    AOP 概述 什么是 AOP       AOP:全称是 Aspect Oriented Programming 即:面向切面编程 AOP 的作用及优势 作用: 在程序运行期间,不修改源码对已有方法进 ...

  5. 自己动手实现的 Spring IOC 和 AOP - 下篇

    1. 背景 本文承接上文,来继续说说 IOC 和 AOP 的仿写.在上文中,我实现了一个很简单的 IOC 和 AOP 容器.上文实现的 IOC 和 AOP 功能很单一,且 IOC 和 AOP 两个模块 ...

  6. Spring IoC 和 AOP

    Spring IoC 和 AOP spring框架java开发的行业标准. spring全家桶. Web:Spring Web MVC/Spring MVC,Spring Web Flux 持久层:S ...

  7. 简述Spring IOC 和 AOP

    大家好,我是Morning,在CSDN写文,分享一些Java基础知识,一些自己认为在学习过程中比较重要的东西,致力于帮助初学者入门,希望可以帮助你进步.感兴趣的欢迎关注博主,和博主一起学习Java知识 ...

  8. Spring IOC 和 AOP 概览

    IOC(控制反转) IoC(Inversion of Control,控制倒转).所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系. 在没有IOC时,我们 ...

  9. 吊打面试官系列之--吃透Spring ioc 和 aop (中)

    目录 Spring SpringBean的五个作用域 SpringBean的生命周期 创建过程 销毁过程 AOP的介绍和使用 AOP的介绍 AOP的三种织入方式 操作讲解 AOP的主要名词概念 Adv ...

  10. Spring:IOC与AOP

    目录 一.Spring简介 1.Spring 2.spring优势 二.IOC 1.概念和原理 2.自定义IOC容器 1.需求 2.实现 3.Spring相关的API 3.1 图解​编辑 3.2.Be ...

最新文章

  1. URI URL 简介区别
  2. Jscript 内部对象
  3. 源码安装mysql主从_mysql源码安装和主从同步配置
  4. Java双等号,Equals(),HashCode()小结
  5. vue 移动到图片浮动_基于Vue实现拖拽升级(九宫格拖拽)
  6. JS基础02之流程控制语句
  7. SQL Server 的本地时间和UTC时间
  8. PIL修改带有透明像素的png图片颜色
  9. Ajax请求中的Redirect()
  10. 2018年3月11日论文阅读
  11. 计算机二级题库access选择题_计算机二级access选择题题库
  12. cad vba 打开文件对话框_CADvba开发手册.doc
  13. java计算机毕业设计BS景区票务管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
  14. java excel 冻结_Java 冻结、解除冻结 Excel 的行和列
  15. python-数据分析-pandas
  16. 带你用 Python 实现自动化群控(入门篇)
  17. 高德地图 缩放级别(Zoom) 和 比例尺(scale)之间 的关系
  18. 脂多糖(LPS) 来源于肠炎沙门氏菌, S-型解决方案
  19. [转]60个英文阅读网站强力推荐
  20. java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...

热门文章

  1. Excel中的相对引用和绝对引用详解
  2. [Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
  3. 拼音表大全图_阿波罗 STM32F767 开发板资料连载第五十九章 T9 拼音输入法实验
  4. python画满天星_跟我学解Python题-海龟制图满天星
  5. supermicro board bios 升级 超微主板刷 bios
  6. JGIT使用的常见问题
  7. 寄存器与七种寻址方式
  8. 免费c++图片操作库(类)
  9. 在java语言中所有类都是,【填空题】(10-1)Java语言中,( )是所有 类的祖先类。
  10. 计算飞机票价格python_Python 带你薅羊毛:手把手教你揪出特价机票信息