说明:对此书看时所做的记录,对具体的功能点可以自行百度
- 百度网盘链接: https://pan.baidu.com/s/1XOmkxg4f2_ZqHq7SeujTog
提取码: rvj6 - 此书发布于异步社区:https://www.epubit.com/
SpringMVC
- spring ioc控制反转,管理bean的容器
- spring di 依赖注入,如何从ioc容器取出使用
@Autowired 如果有多个不同bean,定义属性时
- 名称是啥就从bean容器中如啥,没有则报错,不报错方法使用required=false
- 还可以使用@Primary,优先注入
- 多个bean注入报错,使用@Qualifer明确注入bean的名称
bean的生命周期
- 默认情况初始化时就完成了依赖注入,但有些时候需要使用时才进行注入,使用@Component的layInit进行延迟初始化
springmvc作用域
- 可以使用Webapplicationcontext去定义其他作用域,如@SCope(Webapplicationcontext.SCope_request),每次请求都试新的bean
spring默认是isSingleton,如果要变成isPrototype
- 在bean类上加入@Scope(ConfigurableBeanFactory.SCope.Prototype),这样每次使用都创建
- 单例模式是spring推荐的配置,它在高并发下能极大的节省资源,提高服务抗压能力
- spring IOC的bean管理器是“绝对的线程安全
spring单例模式是如何实现高并发的?
- spring单例模式是指,在内存中只实例化一个类的对象
- spring中是利用ThreadLocal来以空间换取时间,把每个线程可能存在线程安全问题的参数值放进了ThreadLocal,这样虽然是一个实例在操作,但是不同线程下的数据互相之间都是隔离的
- 因为运行时创建和销毁的bean大大减少了,所以大多数场景下这种方式对内存资源的消耗较少,而且并发越高优势越明显
springboot
- springboot原则:简化开发,约定大于配置
- springcloud是分布式的解决方案
- springboot通过maven依赖找到对应的jar包和嵌入的服务器,然后使用默认自动配置类来创建默认的开发环境
springboot读取配置文件的属性
-
@Value或@ConfigurationProperty
- 读取其他配置文件需要在运行的主文件上加@PropertySource,指定名称即可
-
有时配置文件不存在导入应用无法启动,可以设置条件装配bean,如果条件不存在则报响应的错误
- 在数据源上加@Conditional(databaseCondition.class)
- 此时先读取databaseConditional(必须实现Conditional接口和matches方法,用此去判断数据源的每个属性是否存在),符合后再装配数据源
- 在数据源上加@Conditional(databaseCondition.class)