1. @Bean注解的作用?
使用@Bean能够管理第三方jar包内的类到容器中。
当希望将第三方jar包中的类也加入到Spring容器中进行管理时,由于不方便通过修改第三方jar包中的类源码添加@Component或者@Service注解,
可以使用@Bean注解标记一个方法,在方法中返回需要的类实例。
在@Configuration中被@Bean标记的方法,会被Spring进行CGLIB代理,从而进行增强。
2. @Autowired是如何实现自动装载的?
Spring在创建bean的过程中,最终会调用到populateBean()方法,在populateBean()中判断是否需要属性填充。
如果需要属性填充则会通过后置处理器AutowiredAnnotationBeanPostProcessor类的postProcessPropertyValues()方法实现填充。
当自动装配时,从容器中如果发现有多个同类型的属性时,@Autowired注解会先根据类型判断,然后根据@Primary、@Priority注解判断,
最后根据属性名与beanName是否相等来判断,如果还是不能决定注入哪一个bean时,就会抛出NoUniqueBeanDefinitionException异常。
3. @RestController做了哪些事情?
@RestController为@Controller和@ResponseBody的结合。请求到达时,SpringBoot会接管Servlet,
从所有被@Controller注解的类或方法中找到请求URL对应的方法,调用该方法。添加了@ResponseBody注解的方法,返回的参数会被转为Json字符串。
4. @Transactional如何实现事务回滚?
5. Spring AOP实现原理?
6. Controller、Service、Dao作用?为什么要区分Controller和Service层?
Controller:
顾名思义,业务控制,就是控制业务层Service的,它的作用主要是架起了外界与业务层沟通的桥梁,移动端,前端在调用接口访问相关业务时,
都会通过Controller,由Controller去调相关的业务层代码并把数据返回给移动端和前端。Service:
业务层,所有的内部的业务逻辑都会放在这里处理,比如用户的增删改查,或者发送个验证码或邮件,或者做一个抽奖活动等等等等,都会在Service中进行,
当然,业务里肯定是离不开数据的支持,因此Dao层是必不可少的。Dao:
数据持久化层,就是和数据库打交道的,通过Dao层直接操作数据库。为什么区分Controller和Service层?
Controller层接收请求,调用Service层处理业务逻辑,最后返回数据。
Controller是用户请求与业务逻辑之间的桥梁,同时也起着分割用户请求与业务逻辑的作用,使请求无法直接调用业务逻辑,保护后端服务。
一定要记住,Controller层不应该暴露Service的业务逻辑,而应该直接转发Service的业务处理结果!更不允许直接操作数据库!
此外,Service对以后的分布式部署有极大的作用。
7. 一个项目中有哪些基本的bean?
数据库表对应的 Bean
前端提交的表单数据 Bean
返回给前端的数据 Bean
因业务逻辑实现过程创建的 Bean
8. Spring,Spring MVC,Spring Boot 三者关系?
Spring MVC和Spring Boot都属于Spring,Spring MVC是基于Spring的一个MVC框架,而Spring Boot是基于Spring的一套快速开发整合包
网友评论