Spring是什么
Spring是一个框架,帮助我们快速,高效的维护和管理bean、bean之间的关系的框架。解决了传统代码中,代码耦合度高的问题。
框架的概念:框架是别人把经常被用到的代码封装起来,帮助我们快速开发。
- 比如说:
- UserService userservice = new UserServiceImpl();
- 如果,useservice的实现类改变的时候,我们就需要修改源代码。但是有了spring以后。Spring框架通过JDK的动态代理实现… 。// todo 这里要去补一下基础
Spring的三大基础概念
- IOC 控制反转:把管理bean的权利交给第三方。
- DI 依赖注入:让框架帮我们管理bean之间的关系。也就是不用自己set,让框架在做。
- AOP 切面编程:
BeanFactory 和 ApplicationContext
BeanFactory
一个接口实现他的类是用来管理bean对象的。( 比较底层 )
ApplicationContext
对BeanFactory的封装.和Beanfactory有继承和引用的关系。BeanFactory的getBean被调用时bean才被实例化。而ApplicationContext在容器加载时,所有bean已经被加载。
Bean的实例化
- 直接用bean标签
- 静态工厂、实例工厂、实现FactoryBean延迟加载。
依赖注入
手动装配
- set
- 构造方法
自动装配
bytype / byname
Spring整合第三方框架
Spring整合mybatis
- 配置sqlsessionfactoryBean(配置数据库连接信息)
- 配置mapperscannerconfig(配置扫描mapper)
注解开发
Spring常用注解
- @Component
代替bean标签,只能加在类上。@Repository、@Service、@Controller都是他的语义化标签。
- @Bean
根据bean工厂方法注入bean。加载方法上,根据返回值类型注入bean。方法中的引用对象会被自动根据类型注入。一般类型根据value注入。
- @Value
注入一般数据类型。
- @Autowired
优先根据类型注入,如果该类型有多个bean,再根据名字匹配。不能设置bean的名字。如果要设置bean名。要和Qualifier配置使用(Qualifier后面设置名字)。
- @Qualifier
- @Resources
- @ComponentScanner
扫描标签 代替之前配置文件中的扫描bean的标签
- @PropertyResources
加载本地配置文件。
- @Configuration 代替之前的bean配置文件
AOP
基本概念
一种帮助我们增强某些方法,并降低耦合性的方案。
名词概念
- 通知:增强方法。也就是把这些方法加到需要增强的方法上。
- 切点: 被增强的方法。
- 织入:把通知和切点配置。
实现原理(动态代理)
- jdk的proxy
前提是被代理的类必须实现接口,通过对目标类进行增强实现代理类。
- cglib
动态实现目标类的子类。
Spring事务
// todo
SpringMVC
// todo