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

Spring学不会系列-Spring入门篇

程序员文章站 2022-04-16 16:01:34
Spring入门篇Spring概述什么是Spring?Spring是一个IOC和AOP的开源框架Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能Spring是JavaSE/EE的一站式(FULL Stack)框架Web层:Spring MVC支持Service层:IOC Bean管理、事务管理支持Dao层:JDBC模板、ORM框架整合(Hibernate、Mybatis等等)支持方便解耦,简化开发Spring就是...

Spring入门篇

Spring概述

什么是Spring?

  • Spring是一个IOC和AOP的开源框架
  • Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能
  • Spring是JavaSE/EE的一站式(FULL Stack)框架
    • Web层:Spring MVC支持
    • Service层:IOC Bean管理、事务管理支持
    • Dao层:JDBC模板、ORM框架整合(Hibernate、Mybatis等等)支持
  • 方便解耦,简化开发
    • Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
  • AOP编程的支持
    • Spring提供面向切面编程,可以方便的实现对程序进行日记记录、权限拦截、运行监控等功能。
  • 声明式事务的支持
    • 只需要通过配置就可以完成对事务的管理,而无需手动编程

Spring的优点

  • 方便程序的测试
    • Spring对Junit4支持,可以通过注解方便的测试Spring程序
  • 方便集成各种优秀框架
    • Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、Mybatis等)的直接支持
  • 降低JavaEE API的使用难度
    • Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

Spring的模块

  • Core Container(Spring 4)
    • Beans
    • Core
    • Context
    • SpEL
  • Core Container(Spring 5)
    • Beans
    • Core
    • Context
    • Expression(Spring Expression Language, SpEL)
  • AOP
  • Aspects
  • Instrumentation
  • Messaging
  • Data Access/Integration
    • JDBC
    • ORM
    • OXM
    • JMS
    • Transactions
  • Web(Spring 4)
    • WebSocket
    • Servlet
    • Web
    • Portlet
  • Web(Spring 5)
    • WebSocket
    • WebMVC
    • Web
    • WebFlux
  • Test

Spring IOC

  • IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由给Spring框架管理,由Spring框架管理其对象控制权,包括创建和销毁等一系列的生命周期。

  • DI(Dependency Injection)依赖注入,就是IOC的一种表现方式。利用Xml解析+Java反射机制技术,读取配置文件给对象赋值。

Spring IOC/DI案例演进

获取UserService类对象

  • 传统方式(面向接口编程):

    //1.通过new的方式构造对象
    UserService userService = new UserServiceImpl();
    
  • 工厂模式:

    //创建一个工厂
    class FactoryBean{
    	/*
    	* 工厂提供获取UserService的方法
    	*/
    	public static UserService getUserService(){
    		//通过new的方式构造对象
    		return new UserServiceImpl();
    	}
    }
    
    //通过获取UserService
    UserService userService = FactoryBean.getUserService();
    
  • open-close原则下改造:

    • open-close原则:对程序扩展是open,对修改程序代码是close的。简单来说,就是尽量做到不修改程序的源码,实现对程序的扩展。
    bean.xml配置文件
    <bean id="userService" class="com.demo.service.UserServiceImpl">
    	<!--设置属性-->
    	<property name="name" value="同桌小明">
    </bean>
    
    //创建一个工厂
    class FactoryBean{
    	/*
    	* 工厂提供根据id获取对象的方法
    	*/
    	public static Object getBean(String id){
    		...
    		1.解析xml,获取id和class的关系
    		2.反射生成对象
    	}
    }
    
    //通过获取UserService
    UserService userService = FactoryBean.getBean("userService");
    
  • 感受Spring的工厂模式:

    bean.xml配置文件
    <!-- 配置一个 bean -->
    <bean id="userService" class="com.demo.service.UserServiceImpl"/>
    
    //1.创建Spring的IOC容器,交给Spring的工厂管理
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
    
    //2.从容器中获取Bean,通过工厂获得类(三级缓存)
    UserService userService = (UserService) applicationContext.getBean(“userService”);
    

本文地址:https://blog.csdn.net/weixin_35799945/article/details/107330013