1. spring
spring里的东西很多,最核心的思想是IOC和AOP思想。
IOC:控制反转,对象的创建交给spring容器来完成
private IStudentService studentService = new StudentServiceImpl();
可直接简写为private IStudentService studentService;
Bean注入到IOC容器里面的方式有7种方式?
使用xml的方式来声明Bean的定义,Spring容器在启动的时候会加载并解析这个xml,把bean装载到IOC容器中。
使用@CompontScan注解来扫描声明了@Controller、@Service、@Repository、@Component注解的类。
使用@Configuration注解声明配置类,并使用@Bean注解实现Bean的定义,这种方式其实是xml配置方式的一种演变,是Spring迈入到无配置化时代的里程碑。
使用@Import注解,导入配置类或者普通的Bean
使用FactoryBean工厂bean,动态构建一个Bean实例,Spring Cloud OpenFeign里面的动态代理实例就是使用FactoryBean来实现的。
实现ImportBeanDefinitionRegistrar接口,可以动态注入Bean实例。这个在Spring Boot里面的启动注解有用到。
实现ImportSelector接口,动态批量注入配置类或者Bean对象,这个在Spring Boot里面的自动装配机制里面有用到。
AOP:面向切面编程,能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来
2. springMVC
spring MVC负责请求的转发和视图管理
Spring MVC 的核心组件
DispatcherServlet :核心的中央处理器,负责接收请求、分发,并给予客户端响应。 HandlerMapping :处理器映射器,根据 uri 去匹配查找能处理的 Handler ,并会将请求涉及到的拦截器和 Handler 一起封装。 HandlerAdapter :处理器适配器,根据 HandlerMapping 找到的 Handler ,适配执行对应的 Handler:请求处理器,处理实际请求的处理器。 ViewResolver :视图解析器,根据 Handler 返回的逻辑视图 / 视图,解析并渲染真正的视图,并传递给 DispatcherServlet 响应客户端
统一异常处理怎么做?
用到 @ControllerAdvice + @ExceptionHandler 这两个注解 。
@Transactional(rollbackFor = Exception.class)注解
如果这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。
3. SpringBoot
主要是主动装配过程是
核心注解
@SpringBootApplication,@Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。 @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制 @Configuration:允许在上下文中注册额外的 bean 或导入其他配置类 @ComponentScan: 扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描启动类所在的包下所有的类 ,可以自定义不扫描某些 bean。
主动装配
Spring Boot 通过@EnableAutoConfiguration开启自动装配,通过 SpringFactoriesLoader 最终加载META-INF/spring.factories中的自动配置类实现自动装配,自动配置类其实就是通过@Conditional按需加载的配置类,想要其生效必须引入spring-boot-starter-xxx包实现起步依赖
自动装配流程
(1) 通过注解 @SpringBootApplication=>@EnableAutoConfiguration=>@Import({AutoConfigurationImportSelector.class})实现自动装配。 (2)AutoConfigurationImportSelector类中重写了ImportSelector中selectImports方法,批量返回需要装配的配置类。 (3)通过Spring提供的SpringFactoriesLoader机制,扫描classpath下的META-INF/spring.factories文件,读取需要自动装配的配置类。 (4)依据条件筛选的方式,把不符合的配置类移除掉,最终完成自动装配。通过@ConditionalOnXXX
读取配置信
使用 @Value(“${property}”) 读取比较简单的配置信息 通过@ConfigurationProperties读取配置信息并与 bean 绑定 @PropertySource读取指定 properties 文件
|