目录
- 一、ssm概述
- 1.1 定义
- 1.2 持久层框架 (mybatis&&mybatisPlus)
- 1.3 Web 层框架 springMVC
- 1.4 spring框架
- 二、开发结构
- 2.1 config介绍
- 2.2 controller介绍
- 2.3 dao介绍
- 2.4 domain介绍
- 2.5 exception介绍
- 2.6 interceptor介绍
- 2.7 service介绍
- 三、注解开发介绍
- 3.1 常见的注解
- 3.2 部分注解使用的位置
一、ssm概述
1.1 定义
- SSM框架是Java EE 领域内三大优秀框架的缩写,它们分别指的是 spring,springMVC,Mybatis 框架的简写。
1.2 持久层框架 (mybatis&&mybatisPlus)
- Mybatis 是一个优秀的持久层框架。它采用的框架思想是ORM(对象关系映射),这也是大多数持久层框架采用的思想。何为ORM呢。说简单点ORM实现的功能就是把我们的Java 实体类也数据库的字段对应起来,可以快速的实现Java实体类字段封装到sql 语句,把数据库查询出来的结果集封装到Java实体类。例如,在mysql中,我们的数据定义假设为user_name,那么到了java中,我们就会使用驼峰命名法,这样是无法实现数据对应的。那么mybatis就完美的解决了这个问题
- Mybatis是一个在Mybatis实现上的进一步封装,使得整个开发过程更加简便,例如,对于他来说,不需要书写Dao层的内容。当然,这虽然简化了一定的过程,但是很多时候对于复杂运用还是需要采用Mybatis去进行开发的。
1.3 Web 层框架 springMVC
- spring MVC 是一个web 层的框架,它属于由spring 提供的web 层扩展,通过spring MVC 可以解决掉我们在利用 Servlet 原生API进行 web 模块编写时一个请求就要去对应一个Servlet 类的问题,也可以轻松的解决我们频繁手动进行参数绑定,视图映射等问题。spring MVC可以说极大的简化了我们web 功能模块重复代码的编写,使我们的单个 web 功能模块更加高内聚低耦合。
1.4 spring框架
- 上面我们说了,spring 框架不属于三层架构的任意一层,它工作在整个三层架构,这是怎么回事?因为 spring ,它的核心在IOC 和 AOP,IOC代表的是一个Java bean 容器,通过IOC 可以实现 控制反转和依赖注入,如此我们不在需要手动去new 对象,统一把 Java 对象交由 IOC 容器进行管理加粗样式(依赖关系),解耦我们的程序,基于这一特性,也利于我们spring 整合各类框架实现业务开发。AOP 的主要通过反射家动态代理实现已有方法增强,减少冗余代码,常用来进行 事务管理也日志记录。基于spring 的优良特性也诞生了我们优秀的微服务框架spring Boot,通过spring Boot 我们可以高效进行框架整合(启动器start)。
二、开发结构
2.1 config介绍
- Spring4 以后,官方推荐我们使用Java Config来代替applicationContext.xml,声明将Bean交给容器管理。
在Spring Boot中,Java Config的使用也已完全替代了applicationContext.xml。实现了xml的零配置。所以无论从Spring的演进。其实就是用java类去代替了以前复杂的xml配置,实现简化开发。
2.2 controller介绍
- controller即表现层,是实现和前端对接的重要部分(可以理解为过去在javaweb中学习的servlet部分),在现行springboot的这种方式,使得这一部分的代码书写简单易懂。前端发送的json数据能够很好的进行处理,也能够通过这里获取数据库内容。
2.3 dao介绍
- dao层你可以理解为是具体的向数据库发送sql语句的部分,在mybatisPlus中这部分也是被省略的部分,因为mybatis已经帮我们封装好了一些基本的查询语句,我们只要添加对应依赖即可。
2.4 domain介绍
- 用来定义用户的属性名以及提供getter,setter以及toString,构造方法等。通过对接Dao实现增删改查操作的返回。
2.5 exception介绍
- 对于前期基础的开发,或许我们还能够直接地在service实现类中进行定义,但随着工程量的增大,会发现需要的错误越来越多,而且很多还存在很多的重合,因此,对与异常的输出封装就显得十分必要。
2.6 interceptor介绍
- 这一部分可以称其为拦截器,用来实现拦截有点像(javaweb的filter),书写这里,我们能够实现某些操作,例如访问页面需要先登录等操作。作者在现行操作中使用其解决了jquery的数据拦截问题。
2.7 service介绍
- 对于springboot开发来说,我们并不希望在我们实现某项功能时候还有大量的一些new操作以及判断操作,我们希望在我们实现某个方法的时候只需要通过创建上转型对象实现。因此,我们会在service层书写一个实现类用来对接Dao层的功能实现,然后通过service接口创建实现上转型。
三、注解开发介绍
3.1 常见的注解
- @Controller
组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上。
- @Service
组合注解(组合了@Component注解),应用在service层(业务逻辑层)
- @Reponsitory
组合注解(组合了@Component注解),应用在dao层(数据访问层)
- @Component
表示一个带注释的类是一个“组件”,成为Spring管理的Bean。当使用基于注解的配置和类路径扫描时,这些类被视为自动检测的候选对象。同时@Component还是一个元注解。
- @Autowired
Spring提供的工具(由Spring的依赖注入工具(BeanPostProcessor、BeanFactoryPostProcessor)自动注入。)
- @Configuration
声明当前类是一个配置类(相当于一个Spring配置的xml文件)
- @ComponentScan
自动扫描指定包下所有使用@Service,@Component,@Controller,@Repository的类并注册
- @Bean
注解在方法上,声明当前方法的返回值为一个Bean。返回的Bean对应的类中可以定义init()方法和destroy()方法,然后在@Bean(initMethod=”init”,destroyMethod=”destroy”)定义,在构造之后执行init,在销毁之前执行destroy。
- @Value
值得注入。经常与Sping EL表达式语言一起使用,注入普通字符,系统属性,表达式运算结果,其他Bean的属性,文件内容,网址请求内容,配置文件属性值等等
- @RunWith
这个是Junit的注解,springboot集成了junit。一般在测试类里使用:@RunWith(SpringJUnit4ClassRunner.class) — SpringJUnit4ClassRunner在JUnit环境下提供Sprng TestContext Framework的功能
- @RequestMapping
用来映射web请求(访问路径和参数),处理类和方法的。可以注解在类和方法上,注解在方法上的@RequestMapping路径会继承注解在类上的路径。同时支持Serlvet的request和response作为参数,也支持对request和response的媒体类型进行配置。其中有value(路径),produces(定义返回的媒体类型和字符集),method(指定请求方式)等属性。
- @RestController
组合注解,组合了@Controller和@ResponseBody,当我们只开发一个和页面交互数据的控制层的时候可以使用此注解。
- @SpingBootApplication
SpringBoot的核心注解,主要目的是开启自动配置。它也是一个组合注解,主要组合了@Configurer,@EnableAutoConfiguration(核心)和@ComponentScan。可以通过@SpringBootApplication(exclude={想要关闭的自动配置的类名.class})来关闭特定的自动配置。
3.2 部分注解使用的位置
- Controller,Service,Respontory应用位置,下面是位置对应
- Autowired用来注入需要使用的对象,和value的使用有异曲同工之妙,value用来使用一个变量
- SpringBootApplication
- RestControllerh和ReqiuestMapper运用在Controller