1.注入属性是都有哪些注解?
①@Autowired:最常用的注解,注入的是引用类型,根据byType自动注入,如果想要byName,可以搭配@Qualifier注解使用
②@Value:注入八大基本数据类型和String
③@Resource:相当于@Autowired根据,默认是根据byName自动注入(要求JDK1.6)
④@Reference:dubbo独有的注解
2.@RequestMapping和@RequestParam的区别
@RequestMapping是修饰方法或者类的,@RequestParam是修饰属性的
3.后台如何接受前端返回的JSON数据
如果是表单提交的话,可以通过request.getParameter()获取;其他的可以在后台的方法上加上@ResponseBody注解
spring没有内置转json的类,需要依赖三方jar包--jackson
4.说说Spring的两大核心内容
Spring的两大核心内容是IOC和AOP。
IOC是控制反转,创建和管理对象的事交给Spring容器来做,底层采用的是反射+工厂模式;默认是单例的,只创建一个bean实例,如果想要多例可以通过scope指定,IOC中有一个名词叫做DI(依赖注入),是为属性赋值的,DI有三种注入方式:构造器注入、setter注入、接口注入
AOP是面向切面编程,将业务逻辑代码与非业务逻辑代码(比如:日志、事务)分离,底层用的是动态代理模式,实现了代码复用,增强了代码可读性,主要应用有:日志输出、事务管理、权限拦截、性能检测
5.介绍一下SpringMVC
springMVC是spring下的表现层子框架,springMVC有一个核心控制器,所有的请求都会先发送到核心控制器这里,核心控制器在Tomcat启动时会创建并执行init函数,init函数会读被@Controller标注的类,将由@RequestMapping标注的方法的映射关系存放到HandlerMapping(处理器映射器)中,键放地址,值放方法,当前端发送来请求时,会由核心控制器发送到处理器映射器,通过地址执行相应的方法,并将结果返回给核心控制器做处理后,返回给用户。
文章图片
6.过滤器(filter)与拦截器(Interceptor)的区别
- 过滤器是基于servlet的,在web.xml里配置;拦截器是基于框架的,在mvc.xml里配置
- 过滤器底层是回调函数;拦截器底层是反射机制
- 过滤器对所有请求过滤;拦截器对controller请求过滤
- 过滤器只被调用一次,拦截器被多次调用
- @ConfigurationProperties写在类上,其他的信息写在配置文件中;@Value写在属性上
- @ConfigurationProperties可以批量注入,传入的值是对象;@Value是一个一个注入,传入具体的属性
- @ConfigurationProperties支持松散绑定,对名字的要求没有那么严格(firstName first_name); @Value不支持松散绑定
- @ConfigurationProperties不支持spel; @Valuespel; @Value支持spel
- @ConfigurationProperties支持JSR303校验; @Valuespel; @Value不支持JSR303校验
- springboot相当于单个微服务,springcloud是将一个个单个微服务整合起来
- springboot可以离开springcloud单独开发,springcloud离不开springboot,依赖关系
- springboot专注开发单个个体微服务,springcloud关注全局服务治理框架
- @AutoWried
- @Controller
- @Service
- @Configuration
- @Component
- @RequestMapping
- @ResponseBody
读取配置---定义bean---实例化---对象赋值---初始化---销毁
11.Spring的循环依赖
spring循环依赖是指2个以上对象相互拥有彼此,形成闭环。
spring是通过三级缓存来解决这个问题的。一级缓存存放初始化好的对象,二级缓存存放属性未填充的对象,三级缓存存放bean工厂。
12.Dubbo与SpringCloud的区别?
- springCloud采用rest方式;dubbo采用RPC方式
- springCloud的注册中心是eureka; dubbo的是zookeeper
- springCloud侧重于微服务一站式解决方案;dubbo的定位是一款RPC框架
- 服务注册与发现eureka
- 负载均衡ribbon
- 网关zuul
- 断路器hystrix
- 安全security
- 远程调用 feign
服务熔断是A服务调用B服务发现调用不通,就不在让A服务发起调用,避免“雪崩效应”
服务降级是A服务调用B服务,调用失败后访问callback中的降级方法
15.微服务的优缺点,在项目中踩过的坑
优点:
- 服务内聚,一个服务干一件事
- 易于与第三方集成
- 低耦合
- 开发效率高
- 运维难度增大
- 服务间通信成本高
16.eureka和zookeeper都是注册中心,区别是什么?
- zookeeper保证的是CP;eureka保证的是AP
- zookeeper的master节点宕机时,其他节点会重新选举leader,在选举期间整个zk不可用。eureka在一个节点挂掉后,会随机选取另一个节点,不过不能保证数据时效性。
- eureka有自我保护机制
推荐阅读
- java|3月,劝你不要跳槽!
- 001.Java中的日期时间类详解(Date、DateFormat、Calendar)
- 云原生时代的Java应用优化实践
- Java学习|JDBC入门一 驱动下载和第一个简单的jdbc程序
- Java学习|Java入门 Vector类
- Java学习|Java小项目 零钱通
- 几种主流的分布式定时任务,你知道哪些()
- Spring Boot + MDC 实现全链路调用日志跟踪,这才叫优雅。。
- 技能树-基础之章-数据结构-链表操作