spring boot 原理
1.@SpringBootApplication
包含@Configuration、@EnableAutoConfiguration、@ComponentScan三个注解
A.@SpringBootConfiguration中的@Configuration:IoC容器的配置类
@Configuration可理解为用spring的时候xml里面的标签@Bean可理解为用spring的时候xml里面的标签
保证Spring Boot main入口在要扫描的类的上层包可以。
B.@EnableAutoConfiguration :spring boot的核心功能是由这个注解提供的
@Import(EnableAutoConfigurationImportSelector.class)
@Import注解导入的配置功能,将所有符合自动配置条件的bean定义加载到IoC容器
C.@ComponentScan:功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。
spring 事物
spring支持编程式事务管理和声明式事务管理两种方式。
编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。
声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。
声明式事务管理也有两种常用的方式:
虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。




mybatis与hibernate的区别
JVM内存模型
Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。
并发编程的三大概念:原子性,有序性,可见性。
附:@RestController=@ResponseBody + @Controller
网友评论