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原理相关推荐

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

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

  2. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  3. Spring:IOC和AOP

    Spring:IOC和AOP 一. IOC (1) 引入 (2) 定义 (3) 作用 (4) 实现 (5) DI依赖注入 二. AOP (1) 概念 (2) Spring中的AOP (3) 入门案例 ...

  4. 彻底学会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 ...

  5. Java 第一大框架:Spring 的 IoC 跟 AOP 雏形如何实现?

    Spring Spring make java more simple: Spring make java more modern: Spring make java more reactive: S ...

  6. Spring框架(IoC、AOP面向接口切面)

    新建一个Maven工程 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发. ...

  7. Spring总结(IOC、AOP原理以及Spring事务)

    一.概述 1.Spring是一个开源免费且轻量级的框架 , 非侵入式的 . 2.控制反转 IoC , 面向切面 Aop 3 .对事物的支持 , 对框架的支持 一句话概括: Spring 是一个轻量级的 ...

  8. spring中IoC和AOP的实现

    6.2 spring IoC IoC容器是Spring的核心.容器从配置文件中读取需要创建哪些对象,并在创建后按照要求把它们进行装配,通过这样的方法达到业务代码解耦的目的.不仅如此,spring还负责 ...

  9. Spring的IOC和AOP思想

    Spring框架的两大核心(ioc和aop) 一.ioc:控制反转(Inversion of Control)思想 1.1.由spring来负责控制对象的生命周期和对象间的关系(SSM框架中的依赖关系 ...

最新文章

  1. 【数论】数论基础合集
  2. Python多分类问题下,micro-PR计算以及macro-PR计算
  3. HDU5320 : Fan Li
  4. 深度学习100例-生成对抗网络(DCGAN)手写数字生成 | 第19天
  5. 循环队列解决约瑟夫问题
  6. DB2 9 使用开辟(733 检验)认证指南,第 2 部分: DB2 数据操作(1)
  7. IOC操作Bean管理XML方式(注入外部bean)
  8. 第二个情人节表白网页源码
  9. makefile工作笔记0002---gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
  10. C++ 栈展开如何防止内存泄露
  11. 配置IIS Express 7.5以允许外部访问
  12. 个人简历自我介绍求职面试PPT模板
  13. 不会比这更详细的前端工程化的入门教程了
  14. 【Django BUG 已解决】You must either define the environment variable DJANGO_SETTINGS_MODULE or call ...
  15. 取关几十个优质公众号,是否可惜?
  16. 数据压缩作业1之:使用音频分析软件(Audacity)分析浊音、清音爆破音的时域及频域特性。
  17. 视觉SLAM十四讲学习第二部分(ch7-ch14)
  18. 最新的全球78707个主要城市数据库,包含经纬度坐标值国家省份
  19. 智慧高速公路车路协同系统框架及要求
  20. 分享QQ空间营销秘籍

热门文章

  1. BZOJ1875: [SDOI2009]HH去散步
  2. 知名投资人大卫 · 考恩:量子计算值得我“豪赌”
  3. VBA批量处理PPT中图片尺寸
  4. 智能视频监控的应用方向
  5. 手机大战略的游戏设计(3)
  6. html怎么选择文件夹路径,js 选择本地文件夹路径
  7. 罗技g903和g502无线版对比评测
  8. 输入电压:13.5~22VDC.output: 27vdc ,恒流输出:1.5A.支持pwm调光-AH1101
  9. 第二十六章、Linux 核心编译与管理
  10. MVC模式与三层架构