Spring入门

1.Spring入门

什么是Spring?

 

Spring 是一个从实际开发中抽取出来的框架,企业级应用开发的 一站式 选择,贯穿表现层、业务
层和持久层。具有高开放性,并能与其他框架无缝整合,俗称 架构粘合剂
Spring 有两大核心功能:控制反转 / 依赖注入 IOC/DI 面向切面编程 AOP
对于开发者来说,开发者使用 Spring 框架主要是做两件事:①开发 Bean ;②配置 Bean
Spring 容器作为超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称为 Bean

为什么要使用Spring?

spring 的优点:
低侵入式设计,代码的污染极低。
独立于各种应用服务器,基于 Spring 框架的应用,可以真正实现 Write Once Run Anywhere 的承
诺。
Spring IoC 容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
Spring AOP 支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的
复用。
Spring ORM DAO 提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
Spring 的高度开放性,并不强制应用完全依赖于 Spring ,开发者可自由选用 Spring 框架的部分或全
部。

2.使用maven搭建Spring

步骤一、添加依赖   此处依赖可去官网 https://mvnrepository.com/   查询
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.22</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.22</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.22</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.3.22</version>
        </dependency>

步骤二、编写spring的配置文件    ApplicationContext.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-3.0.xsd">
 </beans>

步骤三、HelloSpring

1.编写HelloSpring

package niit.com;


import javax.swing.*;

public class HelloSpring {
    public String who=null;

    public String getWho() {
        return who;
    }

    public void setWho(String who) {
        this.who = who;
    }

    public void hello() {
        System.out.println("hello"+this.who+"!");
    }

}

2. 使用Spring创建HelloSpring的对象并未属性赋值(此过程发生在 ApplicationContext.xml )
    <bean id="helloSpring" class="com.niit.springtest.HelloSpring">
        <property name="who" value="SpringTwo"/>
    </bean>

3.编写测试类调用Spring创建的bean

    @Test
    public void testThree(){
        //初始化Spring上下文对象 context
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        //从上下文中获取业务层对象
        UserService service = (UserService) context.getBean("userService");
      
        service.addUser();
        service.trasfer();
    }

3.IOC/DI控制反转/依赖注入

3.1 概念

控制反转 IOC :( Inversion of Control
把创建依赖对象的 控制权 谁用谁创建 ,反转后, 统一交给 Spring 来完成的过程。
调用者获取被依赖对象的方式由原来的 主动获取 ,变成了 被动接受
依赖注入 DI Dependency Injection )通过 spring 容器,来为对象的属性 注入 相关依赖的值。
依赖 :一般指通过局部变量、方法参数、返回值等建立的对于其他对象的 调用关系 。例如,在 A 类的方法中,实例化了 B 类的对象并调用其方法来完成特定功能,我们就说 A 类依赖 B 类。
IOC DI 的区别与联系
控制反转与依赖注入说得是一回事,只不是两个角度来阐述 Spring 框架的这一技术实现。相
对于控制反转来说,依赖注入更好理解,即由容器( Spring )负责把组件所依赖的具体对象注入(赋值)给组件,从而避免组件之间硬编码的方式耦合在一起。
依赖注入的方式
设值注入: IoC 容器通过成员变量的 setter 方法来注入被依赖对象
构造注入:利用构造器来设置依赖关系的方式,被称为构造注入
P 命名空间注入 : 使用 p 命名空间注入
Spring 提供以下注解
@component 通用注解,表示创建一个 bean
@Repository 表示创建的 dao 层的 bean
@Service 表示创建的是 service 层的 bean
@Controller 表示创建的 Controller 层的 bean
@Autowired 用来进行依赖注入。默认按照类型来查找
@Qualifier ("bean id") 补充 @Autowired ,添加按照名称查找 bean 的方法
@Resource @Autowired 作用一样,但这个是 JAVA 提供的注解, 默认按照名称来查找
bean 如果指定名称的 bean 不存在, 会自动转换为按照类型去找

4.AOP面向切面编程

4.1什么是AOP?
AOP: :( Aspect oriented programming )面向切面编程。
这是一种思想:通过动态代理技术,实现在不修改原生代码的同时,完成增强处理。
4.2 AOP 的使用场景
日志处理、
访问控制、
事务管理、
性能检测
等等。
4.3 AOP 的相关术语
切面( Aspect :一个模块的横切逻辑
连接点( JoinPoint :程序在执行中的某个具体的执行点。一般定义在代理类上
增强处理( Advice :切面在某个特点连接点上执行的增强代码前置增强、后置增强、环绕增
强、最终增强、异常抛出增强
切入点( PointCut :与连接点对应的具体的描述,特征的描述,比如在哪个类中?那个方法?
什么样的参数啊?一般是定义在切面中的。切入点的表达式
execution(* com.service.. . (..)) 这个表达式的含义为:匹配 com.service 包及其子包下所有类的
所有方法。
目标对象( Target Object :被增强对象,有可能是一个甚至多个切面来为此增强
AOP 代理( AOP Proxy : 负责定义增强处理的类。
织入( Weaving . 将代理和目标对象连接起来的过程就是织入。
4.4 AOP 增强处理类型
前置增强: befor 方法调用前增强
后置增强: afterReturning 方法调用后增强
环绕增强: around 威力最大,功能最全。可以同时完成前后增强、异常增强、最终增强处理 最终增强: after 相当于 try-catch 中的 finally 块。无论是否发生异常都会执行,通常用于关闭资
异常增强: afterThrowing 对于应用中可能会出现异常的地方统一提供异常处理的解决方案
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值