1、对springboot、ssm的认识
springboot是spring框架的一个扩展,我觉得他就像一个粘合剂一样,把很多东西粘合在一起,简化spring应用程序的开发和部署,解决了配置文件冗余的问题,提供了许多开箱即用的功能,像内嵌的Web服务器(TOmcat),ssm是一种传统的java应用程序开发框架,用于构建web应用程序,spring提供了控制反转和面向切面编程的功能,MVC是模型、视图和控制器三层架构框架,而Mybatis是一种用于数据持久化的orm对象关系映射框架,帮助将java对象映射到数据库表。
2、对MVC的理解?
mvc将web应用程序分为模型、视图和控制器三个部分,模型通常是与数据库表对应的java对象,视图是用户界面能看到的那部分,用来呈现模型数据并与用户进行交互,控制器负责处理用户请求,控制应用程序流程,与模型和视图交互。
他的一个工作流程大概是:
用户发出请求,到达前端控制器,一般是DispatcherServlet,然后解析这个请求,还会调用getHandler方法,将请求传递给那个处理器映射器,也就是HandlerMapping,然后他再寻找对应的控制器,将控制器封装为处理器执行链返回给DispatcherServlet,然后寻找能够处理这个请求的处理器适配器,再调用对应的控制器方法,处理请求返回结果。再把这个结果封装到一个对象中,一个嗯,视图对象中,再传给DispatcherServlet,最后就是解析视图,渲染视图给用户看了
- 解析视图:DispatcherServlet调用视图解析器,将ModelAndView中的视图名称解析为具体的视图对象。
- 渲染视图:DispatcherServlet调用视图对象,让其进行渲染,将处理结果填充到视图中。渲染后的响应(HttpResponse)返回给客户端。
- 客户端接收响应:客户端收到渲染后的响应,并根据响应内容进行展示或交互。
他的工作流程是:用户发送请求到前端控制器,一般是DispatcherServlet,根据请求映射找到相应的控制器,控制器处理请求,调用相应的模型来执行业务,并将处理结果的数据传递给相应的视图,视图将结果呈现给用户。哦,中间还有handlermapping这些细节。
最典型的MVC就是JSP+servlet+javabean的模式。
3、SpringBoot 和 SpringCloud 的关系
springboot我觉得就像一个粘合剂,把很多东西整合到一起,就是spring的一个扩展,简化应用程序的开发,解决了spring配置文件冗余的问题。提供了很多方便的功能,比如内嵌了一个tomcat.。springcloud是用来开发微服务的,不过他的实现依赖于springboot搭建。
4、bean的作用域、生命周期
在Spring中,bean作用域用于确定哪种类型的bean实例应该从Spring容器中返回给调用者。singleton 第一种是在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,这个是默认的。prototype 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()。就是多例实例
以下三种该作用域仅适用于web的Spring WebApplicationContext环境。
request 每次HTTP请求都会创建一个新的Beansession 同一个HTTP Session共享一个Bean,不同Session使用不同的Bean。application 是所有会话共享一个实例。
生命周期:
首先是实例化,启动spring应用时,ioc容器会根据这个配置文件或者注解创建bean的实例(利用反射机制)。
第二是属性赋值,就是给bean属性赋值,(调用setter方法或其他方式)
第三是初始化,第四就是使用这个bean了,处于运行状态,被使用到各种业务逻辑中。
最后是销毁,容器调用调用销毁方法做一些资源释放的工作,比如关闭连接、清理缓存等等。
5、Mybatis底层
MyBatis底层就是使用动态代理的方式:通过拦截器方法回调,对目标方法进行增强
6、@Autowired和@Resources
- @Autowired是Spring提供的,默认通过byType方式注入,类的构造函数、setter方法、字段上使用,如果有多个相同类型的Bean的话,可以使用@Qualifier注解或者@Value注解来指定具体的Bean。
- 而@Resource注解是J2EE本身提供的,可以写在字段和setter方法上,默认通过byName方式注入,如果没有匹配则通过byType注入
@Autowired主要用于注入Spring容器中的Bean,而@Resources主要用于注入Java EE 5中的资源。
7、MyBatis 的工作流程、原理
主要就是基于反射还有动态代理实现的。
它首先要读取配置文件,就是那些数据库连接信息、映射文件这些,然后会创建一个会话工厂,获取我们写的动态sql,然后变成静态sql,就开始执行sql语句,去数据库里做各种crud操作,把返回的结果封装成一个对象,一个resultMap对象,最后就是关闭会话了。
8、MVVM、MVCC
mvvm
mvvm就是model-view和viewmodel的缩写,我觉得他就是mvc的改进版,主要目的还是分离视图和模型,提供对view和voewmodel的双向数据绑定,(就是ViewModel的状态改变可以自动传递给View)
3、MVVM是Model-View-ViewModel的缩写。Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。View代表UI组件,它负责将数据模型转化成UI展现出来。
mvcc
MVCC就是多版本并发控制,就是用来解决数据库并发问题的一种技术,它是用MySQL的存储引擎Innodb来实现的
我了解的就是可以让可重复读那个隔离级别能够解决幻读的问题,能理解成就是在事务启动的时候对数据库拍了个“快照”,它保留了那个时刻数据库的数据状态,然后这个事务以后再次读取数据的时候就从这个“快照”中获取,哪怕其他事务新加了数据,也不会影响到“快照”中的数据,也就不会出现幻读了。事务提交的时候就将修改的数据更新到数据库中,然后删除这个快照,这个事务的数据快照,如果事务回滚的话,也会删除这个快照,然后将事务修改的数据还原。
9、常见注解的解释与用法
springboot:
SpringBoot最常用的50个注解(全是干货,干的要死!)_springboot常用注解-CSDN博客
Springboot 核心注解:@SpringBootApplication 注解内部是三大注解功能的集成:
@ComponentScan:开启组件扫描;@SpringBootConfiguration:作用等于 @Configuration 注解,用于标记这个类是配置类;@EnableAutoConfiguration:自动装配的(自动配置的主要是这个注解)
@RestController(@Controller和@ResponseBody)、@RequestMapping(GET、POST、PUT、DELETE)、@RequestParam:用于获取请求参数的值。@PathVariable:用于获取URL中的参数值。@RequestBody、@Autowired、@Component:标识一个类是Spring容器中的组件、@Value、@Bean:将一个方法返回的对象注册为一个Spring Bean。@Qualifier用于指定注入的Bean的名称。@Cacheable、@CacheEvict、@Transactional
springmvc:
1、@Controller定义控制器类
2、@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。
用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。RequestMapping注解有六个属性:
- value:指定请求的实际地址
- method:指定请求的method类型, GET、POST、PUT、DELETE等;
4、@Resource、@Autowired、@PathVariable、@RequestParam、@ResponseBody、@RequestBody:接收固定格式的数据
spring注解:
@Component:标识一个类是Spring容器中的组件、@Controller:控制层、@Service:业务层、@Repository:数据访问层、@Bean、@Autowired、@Resource、@Configuration
@EnableScheduling:定时任务相关,在配置类上使用,开启计划任务的支持(类上)
@Scheduled:来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)
@EnableTransactionManagement:开启事务支持;@EnableCaching:开启缓存支持;
10、Mybatis关联查询
一对一和多对一使用association标签,property参数对应实体类的属性名,column参数对应数据库的字段名,后面是select=方法的全路径名,表示要根据column条件调用这个方法去查询,将结果返回到property中。
一对多和多对多使用collection标签,用法都差不多