Spring

Spring是什么?

Spring是2003年兴起的一个轻量级IOC和AOP的Java开发框架,为了简化企业级应用开发

轻量级:Spring中的jar比较小,运行占用的资源较小

IOC:即 Inversion of Control,缩写为 IOC,就是由 Spring IoC 容器管理对象,而
非传统实现中由程序代码直接操控,将一些项目有一千自己创建一些对象,转而交给Spring框架统一管理(额外的对对象进行功能的添加),需要是从框架中获取即可,就是把创建对象的控制权,反转给Spring框架,可以对对象进行功能的增强,将创建对象的控制权反转给spring

AOP:AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象各个层次的对象,而面向切面编程是将程序抽象成各个切面,将一些公共的功能进行抽取,但是不需要我们·在自己的方法直接显示调用,而是由一个代理对象去调用,然后再调用我们的方法时,可以将公共的方法横切进来。将非业务代码进行抽取,交给代理对象去调用公共的方法,可以做到不修改原来代码的情况下,为我们增添新的功能,降低业务代码和非业务代码的耦合性

一站式框架:Spring 本身也提供了数据访问功能和 web 功能,以及可以很好的管理其他框架

Spring就像一个后端管理的管家

Spring体系结构

Spring Hello World 搭建

1.创建项目,导入核心功能的jar

依赖注入:spring框架为我们在创建对象时

<!-- spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency

 2.编写 spring 配置文件

<?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="user" class="com.ff.spring.bean.User"> </bean>
</beans>

3.编写一个 User 实体类

 private Integer id;
    private String name;


    public User() {
        System.out.println("user无参构造方法");
    }

    public User(Integer id, String name) {
        System.out.println("user 有参的构造方法");
        this.id = id;
        this.name = name;
    }

4.测试 spring

 ApplicationContext applicationContext =     new ClassPathXmlApplicationContext("spring.xml");
        User user = applicationContext.getBean("user", User.class);//通过bean的标识,从spring容器中获得到bean
        System.out.println(user);

IOC(控制反转)

读作“反转控制”(Inverse of Control)更好理解,不是什么技术,而是一种
设计思想,就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来
管理。

IOC  Inversion of Contro(控制反转) 是一种设计思想.
  就是将在程序中创建对象的控制权反转给spring框架统一管理.
  spring如何管理:  负责对象的创建(实例化),初始化,对象之间的依赖关系,功能的增强,对象销毁,整个的生命周期进行管理.
                  与之前自己new的对象是有区别的.
                  这就是一种反向使用.
//BeanFactory接口 是spring框架最顶级的接口,定义基本的对象管理的方法
//ApplicationContext接口是BeanFactory的子接口,扩展一些其他的功能.
ClassPathXmlApplicationContext("配置文件");//负责具体对象管理的实现类

Spring Bean 管理

在bean标签中配置需要让spring框架进行管理的类, 由spring框架创建管理的对象,一般称为一个bean对象. new 的对象称为原生对象 id="唯一标识" name="也可以使用name进行定义" class="类地址" scope="singleton" bean的作用域 singleton单例bean,始终只会创建一个bean对象,在容器启动时创建 prototype 原型的(多例的) 每次getBean()时,都会创建一个新的bean对象,在每次获取时创建 spring为我们创建对象时,需要为对象中的属性进行赋值操作(依赖注入) 注入可以通过属性的set方法和构造方法
<bean id="user" name="user2" class="com.ffyc.springpro.model.User" scope="prototype">
        <constructor-arg name="id" value="100"></constructor-arg>
        <constructor-arg name="name" value="tom"></constructor-arg>
    </bean>

    <bean id="userDao" class="com.ffyc.springpro.dao.UserDao"></bean>

    <bean id="userService" class="com.ffyc.springpro.service.UserService">
        <property name="userDao" ref="userDao"></property>
    </bean>

注解

注解开发准备工作
注解需要的 jar 包
注解功能封装在 AOP 包中,导入 Spring aop jar 包即可
开启注解扫描

<context:component-scan base-package="包名"> </context:component-scan>

注解与 XML 的对比
注解优点: 方便,直观,高效(代码少,没有配置文件的书写那么复杂)。
注解缺点:以硬编码的方式写入到 Java 代码中,修改是需要重新编译代码的。
xml 优点是: 配置和代码是分离的,在 xml 中做修改,无需编译代码,只需重
启服务器即可将新的配置加载。
xml 的缺点是:编写麻烦,效率低,大型项目过于复杂。

AOP(面向切面编程)

 oop面向对象编程,是对整个程序的全局的一种架构的设计(战略层面)

aop是oop的补充,是一种战术层面的,aop将程序中的非业务代码进行抽取,将非业务代码与业务代码相隔离,然后通过一个代理对象在业务代码中调用非业务代码,提高了代码的灵活性,提高了开发效率,耦合性降低

aop这一思想核心就是使用一个代理对象,在中间帮忙调用,为我们的程序添加功能,注意aop思想不是spring特有的,是Java中的一种代理思想

连接点:类中可以被增强的方法(例如新增、修改、删除等)

切入点:实际被增强的方法

通知:方法被增强的功能(事物、日志、权限验证。。。),分为前置通知,后置通知,异常通知、最终通知

切面:把通知添加到切入点的整个过程叫切面

目标:代理的目标对象(连接点,切入点的所在类),真正做这件事的类

代理:向目标对象应用通知时创建的代理对象,代理对象,帮助我们调用通知对象

1,导入aspectJaop框架

2,将所有的通知都抽取到一个类中

3,在spring配置文件中,配置切入点的xml文件

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
 <bean id="comminUtil" class="com.ffyc.springpro.util.CommonUtil"></bean>
    <aop:config>
<!--        指定切入点-->
        <aop:pointcut id="inserAdmin" expression="execution(*
        com.ffyc.springpro.dao.AdminDao.inserAdmin(..))" />
        <aop:aspect ref="commonUtil">
            <aop:before method="saveLog" pointcut-ref="inserAdmin"></aop:before>
            <aop:after method="saveLog" pointcut-ref="inserAdmin"></aop:after>
        </aop:aspect>
    </aop:config>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值