初学者快速了解spring的IOC和AOP原理
spring框架概述
1.spring是轻量级的开源的javaEE框架
2.spring可以解决企业应用开发的复杂性
3.spring有两个核心部分:IOC和AOP
(1)IOC:控制反转,把创建对象过程交给是spring进行管理
(2)AOP:面向切面,不修改源代码进行功能增强
IOC容器
IOC可以创建对象,降低代码的耦合,其创建对象有两种方式
1.IOC操作Bean管理(基于xml)
2.IOC操作Bean管理(基于注解)
IOC基于xml创建对象
1.在idea中创建一个spring项目
2.在resources文件夹下创建一个.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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--集合类型属性的注入--><bean id="stu" class="collectiontype.Stu"><!--数组类型属性注入--><property name="courses"><array><value>java课程</value><value>数据库课程</value></array></property><!--list类型属性注入--><property name="list"><list><value>张三</value><value>小三</value></list></property><!--map属性注入--><property name="maps"><map><entry key="JAVA" value="java"></entry><entry key="PHP" value="php"></entry></map></property><!--set属性注入--><property name="sets"><set><value>MySql</value><value>Redis</value></set></property><!--注入list集合类型,值是对象--><property name="courseList"><list><ref bean="course2"></ref></list></property></bean><!--创建多个course对象--><bean id="course1" class="collectiontype.Course"><property name="cname" value="spring5框架"></property></bean><bean id="course2" class="collectiontype.Course"><property name="cname" value="MyBatis框架"></property></bean>
</beans>
3.以上的配置文件就是为了创建stu.java和配置其相关信息
stu.java 的代码如下
package collectiontype;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;/*** @author liuqunliang* @date 2020/11/20 15:00*/
public class Stu {//1、数组类型的属性private String[] courses;//2、list集合类型属性private List<String> list;//3、map集合类型属性private Map<String, String> maps;//4、set集合类型属性private Set<String> sets;//学生所学多门课程private List<Course> courseList;public void setCourseList(List<Course> courseList) {this.courseList = courseList;}public void setSets(Set<String> sets) {this.sets = sets;}public void setCourses(String[] courses) {this.courses = courses;}public void setList(List<String> list) {this.list = list;}public void setMaps(Map<String, String> maps) {this.maps = maps;}public void test() {System.out.println(Arrays.toString(courses));System.out.println(list);System.out.println(maps);System.out.println(sets);System.out.println(courseList);}
}
4.最后在测试看是否配置成功
@Testpublic void testCollection() {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Stu stu = context.getBean("stu", Stu.class);stu.test();}
以上是基于xml配置文件创建对象
IOC基于注解创建对象
为了简便开发,后面基本是基于全注解开发
1.创建一个类,通过@configuration将其变为配置文件,再通过@ComponentScan扫描该配置文件代码如下
package com.lin.spring.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/*** @author liuqunliang* @date 2020/11/24 11:56*/
//Configuration作为配置类,代替xml配置文件
@Configuration
//ConmponentScan相当于xml配置文件中的<context:component-scan base-package="com.lin.spring"></context:component-scan>
@ComponentScan(basePackages = {"com.lin.spring"})
public class SpringConfig {}
2.再创建一个类,使用注解@Service来创建该对象,代码如下
package com.lin.spring.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service;/*** @author liuqunliang* @date 2020/11/24 11:59*/
@Service
public class UserService {public void out() {System.out.println("调用UserService的out()方法");}
}
3.最后在测试是否成功配置
@Testpublic void testConfig() {ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);UserService userService = context.getBean("userService",UserService.class);userService.out();}
运行成功后
IOC基于注解创建对象时一些注解的作用
1.spring针对Bean管理中创建对象提供注解
(1)@component : spring中普通注解,用它可创建对象
(2)@service :一般用在业务逻辑层
(3)@controller :一般用在web层
(4)@Reposity
以上是个注解功能是一样的,都可以用来创建Bean实例
2.基于注解方式实现属性注入
(1)@AutoWired:根据属性类型自动装配
(2)@Qualifier:根据属性名称进行注入
(3)@Resource:可以根据类型注入,也可根据名称注入
(4)@Value:注入普通类型属性
为了避免文章过于冗余,AOP就下篇再讲
快速了解Spring中的AOP
初学者快速了解spring的IOC和AOP原理相关推荐
- 【Spring 源码阅读】Spring IoC、AOP 原理小总结
Spring IoC.AOP 原理小总结 前言 版本约定 正文 Spring BeanFactory 容器初始化过程 IoC 的过程 bean 完整的创建流程如下 AOP 的过程 Annotation ...
- Spring中IOC和AOP的详细解释(转)
原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...
- Spring:IOC和AOP
Spring:IOC和AOP 一. IOC (1) 引入 (2) 定义 (3) 作用 (4) 实现 (5) DI依赖注入 二. AOP (1) 概念 (2) Spring中的AOP (3) 入门案例 ...
- 彻底学会Spring的IOC和AOP——理论+实操
目录 1 IOC 1.1 概念 1.2 底层原理 1.3 IOC容器 1.4 Bean管理:基于xml配置文件实现 1.5 两种类型的Bean 1.6 Bean的作用域 1.7 Bean的生命周期 1 ...
- Java 第一大框架:Spring 的 IoC 跟 AOP 雏形如何实现?
Spring Spring make java more simple: Spring make java more modern: Spring make java more reactive: S ...
- Spring框架(IoC、AOP面向接口切面)
新建一个Maven工程 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发. ...
- Spring总结(IOC、AOP原理以及Spring事务)
一.概述 1.Spring是一个开源免费且轻量级的框架 , 非侵入式的 . 2.控制反转 IoC , 面向切面 Aop 3 .对事物的支持 , 对框架的支持 一句话概括: Spring 是一个轻量级的 ...
- spring中IoC和AOP的实现
6.2 spring IoC IoC容器是Spring的核心.容器从配置文件中读取需要创建哪些对象,并在创建后按照要求把它们进行装配,通过这样的方法达到业务代码解耦的目的.不仅如此,spring还负责 ...
- Spring的IOC和AOP思想
Spring框架的两大核心(ioc和aop) 一.ioc:控制反转(Inversion of Control)思想 1.1.由spring来负责控制对象的生命周期和对象间的关系(SSM框架中的依赖关系 ...
最新文章
- 【数论】数论基础合集
- Python多分类问题下,micro-PR计算以及macro-PR计算
- HDU5320 : Fan Li
- 深度学习100例-生成对抗网络(DCGAN)手写数字生成 | 第19天
- 循环队列解决约瑟夫问题
- DB2 9 使用开辟(733 检验)认证指南,第 2 部分: DB2 数据操作(1)
- IOC操作Bean管理XML方式(注入外部bean)
- 第二个情人节表白网页源码
- makefile工作笔记0002---gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
- C++ 栈展开如何防止内存泄露
- 配置IIS Express 7.5以允许外部访问
- 个人简历自我介绍求职面试PPT模板
- 不会比这更详细的前端工程化的入门教程了
- 【Django BUG 已解决】You must either define the environment variable DJANGO_SETTINGS_MODULE or call ...
- 取关几十个优质公众号,是否可惜?
- 数据压缩作业1之:使用音频分析软件(Audacity)分析浊音、清音爆破音的时域及频域特性。
- 视觉SLAM十四讲学习第二部分(ch7-ch14)
- 最新的全球78707个主要城市数据库,包含经纬度坐标值国家省份
- 智慧高速公路车路协同系统框架及要求
- 分享QQ空间营销秘籍
热门文章
- BZOJ1875: [SDOI2009]HH去散步
- 知名投资人大卫 · 考恩:量子计算值得我“豪赌”
- VBA批量处理PPT中图片尺寸
- 智能视频监控的应用方向
- 手机大战略的游戏设计(3)
- html怎么选择文件夹路径,js 选择本地文件夹路径
- 罗技g903和g502无线版对比评测
- 输入电压:13.5~22VDC.output: 27vdc ,恒流输出:1.5A.支持pwm调光-AH1101
- 第二十六章、Linux 核心编译与管理
- MVC模式与三层架构