Java Web Spring

[TOC]

Java Web Spring

IOC [依赖注入/控制反转]

1、例子:class A中引入class B,两种方法:

  • 传统方法:在A中new一个class B的类。这样是A控制着B。
  • IOC:在A的构造函数中注入一个已经提前new好的class B的类。这样B还是B,不受A的控制。

2、在Spring中的使用:消除所有依赖关系 and 工厂模式

a)消除所有依赖关系:通过控制反转提前new出需要new的类。

b)工厂模式:用一个工厂来提前把所有需要new的类给new出来。供所有需要注入的类去注入。其中有两种工厂模式来进行对象的映射

  • 简单工厂:静态,单个唯一的工厂
  • 工厂方法:动态,一个抽象的、产生工厂的唯一工厂+有多少个产品就有多少个具体工厂的具体工厂(这些工厂是有抽象工厂挨个产生的)。

AOP [面向切面编程]

最简单的理解:为目标对象创建一个代理对象,通过代理对象调用目标对象,并且可以在目标对象前后进行切面编程

单例模式

Spring依赖注入的Bean实例是单例的。

每一个类都仅有一个实例,并且提供了一个全局访问点,也就是BeanFactory,只能通过这个访问点来获取实例。(创建则是在每次初始化运行的时候创建的)

Spring MVC [Spring 的 Handler接口]

利用适配器模式,每每需要新增/扩展一个Controller来处理请求,就直接实现接口,implement Controller,然后直接实现返回值为ModelAndView的handleRequest方法即可。

image-20220113165427573

配置文件

  • Maven:只要用maven进行包管理,那么必定有pom.xml,里边写了各种需要的依赖

  • Spring MVC:

    • 整个项目,命名空间、schema设置->applicationContext.xml;
    • servlet之间映射关系,URL与Controller,请求与处理请求->dispatcher-servlet.xml;
    • 其他URL的映射关系->web.xml
  • Spring Boot:唯一的application.properties配置文件。(配置包括JDBC、Mybatis、logging等等各种都可以在这唯一的配置文件中配置)

运行项目 myPetStore - 利用Spring boot的jpetsotre

项目地址:https://github.com/Aczy156/myPetStore

  • clone之后,运行的时候需要注意:resource目录的目录类型没有同步为resource root,导致运行项目的时候spring容器无法识别,导致application.properties中的很多属性无法被正常提取,所以无法运行。参考博客

运行项目 NewPetStore - 前后端分离 Nuxt.js+Spring boot

前端项目地址:https://github.com/junyussh/newpetstore_frontend

后端项目地址:https://github.com/junyussh/New-JPetstore

  • 出现问题:查看某个product的时候在数据库中找不到这个内容=>出现‘【MYSQL】java.sql.SQLSyntaxErrorException: Unknown column ‘id‘ in ‘where clause‘’,也就是在product列表,点击一个对应的product

运行项目 Unifit - 前后端分离 Nuxt.js+Spring boot

前端项目地址:https://github.com/junyussh/UniFit_frontend

后端项目地址:https://github.com/junyussh/UniFit

  • 出现问题:在配置Nuxt.js的时候,在npm install,报错lodash安装不成功,通过npm install lodash,然后再执行npm install,最后npm run dev即可
Posted on Apr 8, 2020