spring总结:
- spring框架:该框架是java应用最广的框架,包含IOC(控制反转)和AOP(面向切面编程)两大理念。最主要作用简化java的开发。
- spring专用术语:框架:指能完成一定功能的半成品;非侵入式设计:从框架角度去看是指无需继承框架提供的其他类,在更换其他框架时,以前写的代码还可以使用;轻量级和重量级:轻量级一般指非入侵性,依赖东西很少,资源占用非常少,部署简单等,但是对于重量级正好相反;javaBean:指符合javaBean规范的java类;pojo:指简化老式java对象,内部包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现其他java框架的类或接口;容器:从设计角度看就是装入对象的对象,因为存在存入,拿出操作时,对容器还要管理对象的生产周期
- spring框架优势:解耦合,降低了组件之间的关联;面向切面编程,帮助我们无耦合实现日志记录,性能统计,安全控制等功能;方便其他框架集成;降低了java开发难度
- aop目的:将那些与业务无关的业务模块或逻辑封装起来;概念:切入点:在那些类,那些方法上切入(where);通知:在方法执行什么实际(where方法前后)做什么(what增强功能);切面:切面=切点+通知(在什么时机,什么地方,做什么事情);织入:将切面加入到对象当中,并创建出代理对象(交由spring完成)
- spring IOC容器设计主要基于以下两个接口:beanFactory;ApplicationContext,applicationContext是beanFactory的子接口;对beanfactory进行了许多扩展。
- beanfactory定义了许多方法:getbean(根据类型获取bean对象),bean=(Bean) factory.getBean(Bean.class),要求是只在spring当中配置一个这种类型的类;按照bean名字获取bean,bean=(Bean) factory.getBean("beanName");按照名字和类型获取bean:bean=(Bean) factory.getBean("beanName",Bean.class);isSington判断其是否为单例模式;isPrototype相反,默认情况是单例模式
- applicationContext常见实现类:ClassPathXmlApplication(读取classpath中资源)
FileSystemXmlCationContext:读取指定路径资源
XmlWebApplicationContext:需要在web环境下才可以运行
8.Bean定义和初始化是Spring IOC的两大步骤:Resource 定位:Spring IOC容器是根据开发者进行配置和资源定位的,在Spring开发过程当中,定位内容是由开发者提供的;BeanDefinition载入:将resource定位到的信息保存到Bean定义当中,但是不会创建Bean实例;BeanDefinition注册:将BeanDefinition信息发布到Spring IOC容器;注意(完成之后并没有创建对应的bean实例);完成上面三步之后,bean就在容器内被定义了,但是并没有对其进行初始化,也没有注入其配置资源,spring bean内含有配置项lazy-init,它的默认值是default,实际值是false;当将其设置为true时,则会对bean进行初始化完成依赖注入。
9.spring对于bean文件的3中配置方式:
通过隐式bean的发现机制和自动装配原则:可减少开发者决策权限,简单不是灵活
java接口和类配置:避免xml配置的泛滥;具体使用场景:当一个父类具有多个子类,注入其中一个子类是要去初始化,这时需要java去指定
xml方式配置:上面两种都不能使用时使用该方法;具体使用场景:当使用第三方类时,无法修改里面代码,则需要通过xml进行配置使用
10.对于不同数据类型的注入方式:
12.spring提供了两种方式来让容器发现bean:组件扫描:通过定义资源的方式,让spring IOC容器扫描对应的包;自动装配:通过注解定义,使得一些依赖关系可以通过注解完成
@compoent:
这样处理之后并不能直接进行测试,因为Spring IOC并不知道该组件的存在,这个时候需要我们去创建一个StudentConfig类去告知Spring IOC
13.Spring提供的5种作用域,并根据这种情况是否生成对象:
singleton(单例):在Spring IOC容器内部仅有一个bean实例
prototype(多例):每次从容器中调用bean返回一个新的实例,既每次调用getBean()时,相当于执行new XxxBean(),不会在容器启动时创建对象;
request:用于web开发,将bean放入request范围,在同意高request获取同一bean;
session:用于web开发,将bean放入session范围,在同一个Session获得同一bean
golbalSession(全局):一般用于prolet应用环境,分布式系统存在全局session概念,如果不是porlet环境,globalSession等同于session
14.系统springMVC请求流程:
1.请求 2.处理映射器 3.控制器 4.模型及逻辑视图名 5.视图解析器 6.视图 7.请求
15.注解
@Controller:声明控制器,可以使用@Component注解代替
@RequestMapping:表明路径映射到该方法上面
@RequestParam:前台传入后台参数数据;value:指定name属性名称,可以默认不写;required:是否需要该参数,可以设置为true/false;defaultvalue:设置默认值
@modelAttrbute:在书写handleRequest()时会先调用model()方法并将message添加到页面参数中,可以加入各种各样的数据
- @RestController 注解: 该注解是 @Controller 和 @ResponseBody 注解的合体版