FactoryBean 和 BeanFactory的区别
- FactoryBean可简化Bean的实例化过程:
1.通过FactoryBean封装Bean的实例化过程.
2.将FactoryBean装配到Spring容器里.
3.将FactoryBean注入给其他的Bean.
4.该Bean得到的是FactoryBean所管理的对象实例.
Java-RestController注解浅析
1.@RestController为开发提供了方便☺,在提供json接口时需要的配置操作再也不需要自己配置了。
2.@RestController注解相当于@ResponseBody和@Controller的结合
@Controller
@ResponseBody
public class MyController { }
@RestController
public class MyRestController { }
@ResponseBody与@Controller
上面说到@RestController注解相当于@ResponseBody和@Controller的结合,那么在这里就大致介绍一下这两个注解的作用;
@ResponseBody
在实际操作中我们只需要在Controller层使用@RequestBody注解就可以将对象进行反序列化;而若需要对Controller的方法进行序列化,我们需要在返回值上使用@ResponseBody;也可以将@ResponseBody注解在Controller类上,这样可以将这个类中所有的方法序列化。
@Controller
@Controller是一种特殊化的@Component类,在实际操作中@Controller用来表示Spring某个类是否可以接受HTTP请求,她通常与@ResponseBody绑定使用。
@Component
1.把普通POJO(Plain Ordinary Java Object简单的java对象)实例化到spring容器中,相当于配置文件中的
2.泛指组件,当组件不好归类的时候,可以使用@Component注解进行标注
SpringBoot启动类注解
@SpringBootApplication
- @SpringBootConfifiguration:组合了 @Confifiguration 注解,实现配置文件的功能。
- @EnableAutoConfifiguration:打开自动配置的功能,也可以关闭某个自动配置的选项。
- @SpringBootApplication(exclude = { DataSourceAutoConfifiguration.class })
- @ComponentScan:Spring组件扫描
SpringBoot启动方式?
1.main方式
2.命令行java -jar的方式
3.mvn/gradle
SpringBoot自动配置原理
@EnableAutoConfifiguration (开启自动配置) 该注解引入了AutoConfifigurationImportSelector,该类中
的方法会扫描所有存在META-INF/spring.factories的jar包。
开启SpringBoot特性的几种方式
1.集成spring-boot-starter-parent项目
2.导入spring-bootdependencies项目依赖
SpringBoot读取配置相关注解
-
@PropertySource
-
@Value
-
@Environment
-
@ConfifigurationProperties
-
## IOC
-
Spring两大特性:IOC 和AOP
- 什么是控制?控制了什么?
- 对象的创建,对象里的属性赋值都交给Spring来做,这就是控制的思想
- 我们要做的仅仅是定义类,以及定义哪些属性需要Spring来赋值(比如某个属性上加@Autowired)
- 反转的思想就是说,一种对象控制权的转移
Spring事务什么时候会失效?
-
Spring事务的原理是AOP,进行了切面增强,那么失效的根本原因是这个AOP不起作用了
-
1.发生自调用,类里面使用this调用奔雷的方法(this通常省略),此时这个this对象不是代理类,⽽是 UserService对象本身! 解决⽅法很简单,让那个this变成UserService的代理类即可!
-
2、⽅法不是public的:@Transactional 只能⽤于 public 的⽅法上,否则事务不会失效,如果要⽤在
⾮ public ⽅法上,可以开启 AspectJ 代理模式。
-
3.数据库不支持事务
-
没有被spring管理
-
异常被吃掉,事务不会回滚(或者抛出的异常没有被定义,默认为RuntimeException)
-
- 什么是控制?控制了什么?
Spring中的Bean创建的生命周期有哪些步骤
- 推断构造方法
- 实例化
- 填充属性(依赖注入)
- 处理Aware回调
- 初始化,处理InitialzingBean接口
- 初始化后,进行AOP