mark

Spring是通过注解的方式来表明相应对象的作用的,例如:@Controller

什么是Spring?它有哪些好处?

spring是一个轻量级控制反转(IOC)面向切面(AOP)的容器框架

它主要是为了解决企业应用开发的复杂性而诞生的

  • 目的:解决企业级应用开发的复杂性
  • 功能:使用基本的JavaBean代替EJB(什么是EJB
  • 范围:任何Java应用

就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置内部通过反射去动态的组装对象)

Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,根据xml Spring的配置文件来动态的创建对象,和调用对象里的方法的。

Spring是潜在一站式解决方案。

Spring本身存在的优点

  • 低侵入式设计,代码污染极低
  • Write Once,Run Anywhere
  • DI有效的降低了耦合度
  • AOP提供了通用的任务的集中管理
  • ORM和DAO简化了对数据库的访问
  • 高度开放性,并不强制(贯穿于变现层,业务层,持久层)

Spring的优点给开发带来的好处

  • 可以有效组织中间层对象
  • 使用同一的配置文件
  • 促进良好的编程习惯,减少编程代价
  • 易于单元测试。(一Spring基本组就是JavaBean,二提供了对Juit的支持)
  • 使EJB成为一种备选
  • 为数据存取提供了一致性的框架

理解AOP

  • Aspect Oriented Programming:面向切面编程
  • 一个组件A,不关心其他常用的服务组件B,但是这个组件A使用B的时候,不是组件A自身去调用,
    而是通过配置等其他方式,列如Spring中可以通过XML配置文件。这样就使得A压根就不需要
    知道服务组件B是怎么样的,爱存在不存在,爱怎么样存在都与A无关。A只需要关心自己的业
    务逻辑,具体A使用B的时候,配置文件去做,与具体的A组件无关。

继续探讨AOP切面编程

mark

理解IOC

  • Inversion of Control:控制反转
  • IOC(控制反转):说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。
  • DI(依赖注入):说的是创建对象实例时,为这个对象注入属性值或其他对象实例后,侧重于实现。

继续探讨IOC依赖注入

mark

所有变量的初始化不是通过自己来负责的,而是通过依赖注入的概念。Spring框架只要你定义好了一些service,它自己就能把这些处理出来。

  1. 在service文件夹下定义好相应的service类,用@Service注释
  2. 在其他地方,比如controller文件夹中的类声明service中弄好的类的对象时,就可以直接采用“类名+对象名”的方式来生成对象,而不用new操作。用@Autowired注释。

即在service中声明类。在要用的地方依赖注入就可以了。

这样做有什么好处?

如果大家在一起写代码,你可以跟一个人说你给我写个什么样的service,然后我需要什么接口,等他写完后,我只要在我想用的地方直接使用就行了,不用担心怎么初始化,直接在用的地方依赖注入就可以了(直接就拥有了相关对象的句柄)。即该方式的最大好处就是:无需关心变量的初始化,只需要通过注解的方式来表示说这是来自一个秉持(不知道是什么)的对象的初始化就可以了。

总结

它的核心是轻量级的IOC容器,它的目标是为J2EE应用提供了全方位的整合框架,在Spring框架
下实现多个子框架的组合,这些子框架之间可以彼此独立,也可以使用其他的框架方案加以代替。
Spring希望为企业应用提供一站式的解决方案(建议:如果是高并发大型项目,慎重使用,
因为项目大量使用反射机制,必定会影响性能。)

采用MVC模式时的目录结构

模型(model)-视图(view)-控制器(controller)

下图是依赖于Spring框架的项目大概的树形结构

mark

  • model文件夹用来存放模型
  • controller文件夹用来存放控制器
  • 视图则存放在templates模板文件夹中

Spring Boot

参考这篇文章Spring Boot 入门

Spring Boot并不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。

从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用

Spring Boot特点:

  • 创建独立的Spring应用程序
  • 嵌入的Tomcat,无需部署WAR文件
  • 简化Maven配置
  • 自动配置Spring
  • 提供生产就绪型功能,如指标,健康检查和外部配置
  • 绝对没有代码生成和对XML没有要求配置