Spring 框架的学习心得

Spring 框架的学习心得

Spring 框架作为 JavaEE 开发的灵魂框架,以下是我在学习 Spring 框架时写下的一些总结和个人心得。

概述

Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:
反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring
MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多
著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。

Spring 的优势所在

  • 方便解耦,简化开发

    • 通过 Spring 提供的 IoC 容器,可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度程序耦合。因为 Spring 通过 DI (依赖注入)将对象的创建交给了 Spring 来实现,避免了我们过多的使用 new 关键字来创建对象。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可
      以更专注于上层的应用。
  • AOP 编程的支持

    • 通过 Spring 的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付。将一些重复的代码(用于增强功能的代码)抽取出来,在不修改源码的情况下对其进行增强。
  • 声明式事务的支持

    • 可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量。
  • 方便程序的测试

    • 可以用非容器依赖的编程方式进行几乎所有的测试工作。

IoC

IoC 全称 Inversion Of Control 即控制反转。我的理解就是在之前我们对象都是自己创建的,也就是使用 new 关键字创建的,而现在我们不去自己创建对象了,而是让框架去帮我们创建对象。它的目的就是为了程序解耦,当然它也只能是削减程序的耦合性,并不是完全消除,毕竟不可能完全消除掉程序的耦合性。框架实现的方式就是依赖注入即 DI

DI

DI 全称 Dependency Injection 依赖注入。我们告诉框架我们要使用的类的全类名,然后在要使用的时候直接通过框架来获取这个类的实例对象。

使用方式

使用方式分为两种,xml 文件配置和注解,而且这两种方式可以结合起来使用,也是比较推荐的使用方式。毕竟纯注解或是纯配置文件的方式来使用,都是有一定的繁琐的。

配置文件的使用

首先是在配置文件中使用 bean 标签来配置让框架创建的对象。


  • id 给对象在容器中提供一个唯一标识。用于获取对象。
  • class 指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造函数。
  • scope 指定对象的作用范围。常用两个属性 singleton (单例,默认值)和 prototype (多例)。

然后在需要使用这个对象时,通过以下代码来获取。

//1.使用ApplicationContext接口,就是在获取spring容器
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
//2.根据bean的id获取对象
IAccountService aService = (IAccountService) ac.getBean("accountService"); 

注解的使用

首先是在配置文件中要告知框架使用注解是要扫描的包。


然后在需要让框架创建的类上面加一个注解,并且给这个对象指定一个标识。

@Component("accountService")

它有三个子注解,分别对应着我们的三层框架,这三个子注解并没有特殊的作用,但是推荐对应着使用。

  • @Controller 对应着 web 层
  • @Service 对应着业务层
  • @Repository 对应着持久层

最后在需要使用的时候,使用注解将其注入即可。注入的注解有三个。

  • @Autowired 自动按照类型注入。
  • @Qualifier 在自动按照类型注入的基础之上,再按照Bean的id注入。它在给字段注入时不能独立使用,必须和上一个注解一起使用;但是给方法参数注入时,可以独立使用。
  • @Resource 直接按照Bean的id注入。

一般情况下,我们自己写的类都是通过注解的方式来使用,而导入类就是通过配置的方式来使用。

AOP

AOP:全称是 Aspect Oriented Programming 即:面向切面编程。简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。

使用方式

配置的方式

 

	
	


    
    
    
    
        
        
        
        
        
        
    

  • 其实我的理解就是将一些重复的代码提取出来写在一个类中(即通知类),然后在我们要使用它的时候,在配置的切面中去声明它是在切入点(即源代码的方法)之前还是之后使用。

注解的方式

首先在配置文件中开启spring对注解AOP的支持


在通知类上面写上一个注解 @Aspect 声明它是一个切面类。

然后在它的方法上写上注解来声明它是什么通知,对应着分别有五个注解

  • @Before 前置通知
  • @AfterReturning 后置通知
  • @AfterThrowing 异常通知
  • @After 最终通知
  • @Around 环绕通知

声明式事务控制

一般情况下都是通过 xml 文件配置来声明事务控制的,因为可以一劳永逸。



        

    
    
        
     	
            
            
        
    
    
    
        
        
        
        
    

你可能感兴趣的:(Spring 框架的学习心得)