Spring(七):Bean 的初始化和销毁(注解实现)
Spring Bean在使用之前或使用之后需要做一些操作,Spring对Bean
的生命周期的操作提供了支持。
Spring Bean在使用之前或使用之后需要做一些操作,Spring对Bean
的生命周期的操作提供了支持。
项目中,当需要用到Spring容器本身的功能资源时,Bean就需要知道容器的存在,才能调用 Spring 所提供的资源,而 Spring Aware就是提供这样的功能,原本也是给 Spring 框架内部使用的。
Spring Aware 的目的就是为了让 Bean 获取容器的服务。ApplicationContext
接口集成了MessageSource
接口,ApplicationEventPublisher
接口和ResourceLoader
接口,如果让 Bean 继承 ApplicationContextAware
可以获得 Spring 容器的所有服务,但原则上有用到什么接口,再实现该接口。
Spirng 应用启动时,会初始化 ApplicationContext 应用上下文(容器),就可以获取容器中的 Bean,还可以对容器执行一些其它的操作,例如设置环境变量等。
Spring Boot项目常用配置汇总,如引入XML
配置等。
使用XML配置:Spring Boot提倡零配置,即无XML配置,但一些特殊要求需要使用XML配置。
在配置类或入口类上添加如下注解。@ImportResource(value = {"classpath:some-context.xml","classpath:another-context.xml"})
文件上传可以说是项目中最常用的功能。
Spring MVC 为文件上传提供了直接的支持,Spring MVC 提供了一个文件上传的解析类CommonsMultipartResolver
,即插即用(在XML文件装配下),该类依赖了Apache Commons FileUpload
技术,所以需要导入commons-fileupload.jar
和commons-io.jar
两个包。
上传文件,必须将表单的method
设置为post
,并将enctype
设置为multipart/form-data
,浏览器才会把文件二进制数据发给服务器。
拦截器是 Web 项目很重要和常用的功能,如对用户权限验证,判断用户是否已登录等。
SpringMVC 中的拦截器通过实现HanderInterceptor
接口来完成,或继承抽象类HandlerInterceptorAdapter
,重写里面的方法来完成。
文件下载大多使用输出流的方式来实现。而SpringMVC 提供了一个ResponseEntity
类型,可以很方便地定义返回的HttpHeaders
和HttpStatus
。
Spring 支持 AspectJ的注解式切面编程。AOP可以让一组类共享相同的行为。
声明一点:对于软件质量的保证,单元测试真的非常有必要,在CMMI-5标准也是对单元测试有明确要求的。
有的公司的对开发要求严谨的话,开发流程可能执行的是测试驱动开发(TDD
),即根据拿到需求,开发人员先写预期单元测试用例,再根据满足测试用例的要求来开发业务代码。
在不启动项目的情况下,对Spring Web项目,需要一些Servlet
相关的模拟对象,比如:MockMvc,MockHttpSession,MockHttpServletRequest,MockHttpServletResponse
等,还需要WebAppConfiguration
。
声明一点:对于软件质量的保证,单元测试真的非常有必要,在CMMI-5标准也是对单元测试有明确要求的。
有的公司的对开发要求严谨的话,开发流程可能执行的是测试驱动开发(TDD
),即根据拿到需求,开发人员先写预期单元测试用例,再根据满足测试用例的要求来开发业务代码。
在不启动项目的情况下,对Spring Web项目,需要一些Servlet
相关的模拟对象,比如:MockMvc,MockHttpSession,MockHttpServletRequest,MockHttpServletResponse
等,还需要WebAppConfiguration
。