欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

初学者快速了解spring的IOC和AOP原理

程序员文章站 2022-06-28 16:23:09
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.在re...

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文件,然后在该配置文件中配置相关信息(如下图)
初学者快速了解spring的IOC和AOP原理
而该配置文件的代码如下

<?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和配置其相关信息
初学者快速了解spring的IOC和AOP原理
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.最后在测试看是否配置成功
初学者快速了解spring的IOC和AOP原理

@Test
    public 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.最后在测试是否成功配置

@Test
    public void testConfig() {
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        UserService userService = context.getBean("userService",UserService.class);
        userService.out();
    }

运行成功后
初学者快速了解spring的IOC和AOP原理
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

本文地址:https://blog.csdn.net/qq_41761210/article/details/110872315

相关标签: spring java maven