专题1:IOC
接口及面向接口编程:
什么是IOC:控制反转,应用程序本身不负责依赖对象的创建和维护而是由外部容器负责创建维护|DI:依赖注入,是一种实现方式
Spring的bean配置:bean标签ID属性和class反射类
Bean容器的初始化:beans和context包;beanFactory提供配置结构和基本功能,加载并初始化bean;applicationContext保存了bean的对象;初始化applicationContext方法:加载本地文件或者ClassPath,在Web应用当中依赖servlet或者Listener
Spring的常用注入方式:注入是指加载bean配置的时候,完成对变量的赋值;有两种注入方式,设值注入(set方法)和构造注入(构造器,参数为要注入的类和属性)
bean配置项:Id,Class,Scope,Constructor arguments,Properties,Autowiring mode,lazy-initialization mode,Initiallization/destruction method
bean作用域:五种类型:singleton,一个bean容器只存在一份;prototype,每次使用创建新的实例,destroy不生效;request,每次http请求创建一个实例且仅在当前request内有效;session,每次http请求创建,当前session内有效;global session,基于portlet的web中有效(portlet定义了global session),如果在web中同session
bean生命周期:定义,初始化,使用,销毁;实现接口覆盖afterPropertiesSet和destroy方法,bean内部配置init和destroy方法又或者在XML文件中声明默认的初始化和销毁方法
bean自动装配:byname/bytype/constructor
以Aware结尾接口:实现了Aware接口的bean在初始化之后可以获得相应的资源,通过Aware接口可以对Spring相应资源进行操作(但要慎重);为对Spring进行简单的扩展提供了方便的入口
举例:applicationContextAware,beanNameAware,beanFactoryAware
Resources:针对资源文件的统一接口,UrlResourceURL对应的资源/ClassPathResource类路径下的资源文件/FileSystemResource文件系统里的资源,ServletContextResource ServletContext封装的资源用于访问ServletContext环境下的资源/InputStreamResource针对输入流封装的资源/ByteArrayResource针对字节数组封装的资源
@Autowired注解:注解在setter方法上,也可以注解在构造器或成员变量上,默认情况下如果找不到合适的bean会导致autowiring失败而抛出异常但可以设置required属性为FALSE,每个类只能有一个构造器的@Autowire属性被标识为TRUE
数组及map的自动注入:@component@order(数组有序)
@Qualifier 缩小注解范围也可以用于指定单独的构造器参数或者方法参数,可用于注解集合类型的变量
@bean标识一个用于配置和初始化一个由IOC容器管理的新对象的方法,类似于XML配置文件里面的《bean》标签,通常与@Configuration搭配使用
@Resource name属性默认Spring解释该值作为被注入的bean的名称但如果没有显式指定name默认bean的名称从属性名或者setter方法得到
@PostConstruct @PreDestroy CommonAnnotationBeanProcessor不仅能识别@Resource。。Spring2.5以后还引入支持初始化回调和销毁回调,但是前提是CommonAnnotationBeanPostProcessor在Spring的ApplicationContext中注册
@named注解,引入特定名称的bean类似于qualifier
专题三AOP
什么是AOP及实现方式:Aspect Oriented Programming通过预编译的方式和运行期动态代理实现程序功能的统一维护的技术,主要功能有日志记录,性能统计,安全控制,事务处理,异常处理
AOP的实现方式:预编译-AspectJ;运行期动态代理(JDK动态代理,CGLib动态代理)-SpringAOP,JBossAOP
AOP基本概念:待续
SpringBoot
特点:简化配置,springMVC升级版,微服务的入门级框架
@Controller 处理http请求
@RestController 返回json数据,Spring4之前需要@ResponseBody配合@Controller
@RequestMapping 配置URL映射
@PathVariable 获取URL中的数据
@RequestParam 获取请求参数的值
@GetMapping 组合注解