Java web高级编程——Spring Framework

1. Spring Framework的主要功能
(1)反转控制和依赖注入;
(2)面向切面的编程;
(3)数据访问和事务管理;
(4)应用程序消息(订阅-发布模式/观察者模式);
(5)web应用程序MVC模式;

2. 使用Spring的原因
(1)逻辑代码分组:避免了servlet中doGet/doPost中大量的分支和转发逻辑,或者定义大量的servlet,将页面访问映射到方法级别;
(2)使用同一代码库的多个用户界面:将通用的业务逻辑封装成service;

3. 应用上下文(ApplicationContext接口)
在Spring中,Context负责管理Bean,执行业务逻辑的Java对象,执行任务、持久化和获取持久化数据、 响应HTTP请求等
Spring Bean可以,自动装配/检测,消息通知、定时执行、bean验证和执行其他关键Spring服务。
Context是可以分层设计的,同一层的Context之间不可以共享资源,但可以同时共享父级Context中的资源。

类体系
接口
ConfigurableApplicationContext:可配置,基本的ApplicationContext只是可读的;
WebApplicationContext和ConfigurableWebApplicationContext:提供对底层ServletContext和ServletConfig的访问;
具体类
ClassPathApplicationContext;
FileSystemXmlApplicationContext;
XmlWebApplicationContext;
AnnotationConfigApplicationContext;

应用上下文是层次结构
通过ConetxtLoaderListener可以创建根上下文,会自动设置为所有Dispatcher上下文的父级上下文;
一般我们可以将Controller放到具体的Dispatcher上下文中,而Service业务逻辑,数据仓库等放在根应用上下文中,将控制器放在Servlet应用上下文中。

注意:要将不同上下文的自动检测扫描Bean分开,否则会造成生成多个同样的Bean的问题;

4 . 启动Spring Framework
XML部署描述符启动
初始化器启动
通过监听器不能保证在所有监听器之前调用contextInitialized方法;
Java EE6的ServletContainerInitializer可以在应用程序生命周期的最早的点调用onStartup方法;
但是必须要将定义的Initializer类放到JAR文件的/META-INF/services目录中,spring通过桥接接口的方式,springSevletContainerIntializer类实现了 ServletContainerInitializer接口,在onStartUp需找WebApplicationInitializer接口的实现,调用所有的onStartUp方法,因此我们只要实现后者就可以了;

注意:不要将DispatcherServlet映射到URL模式“/*”,而是“/”,防止将jsp映射到Servlet;

5. 配置Spring Framework
三种方式可以配置Spring:
XML方式
混合方式:注解(自动装配+自动检测)+XML;
@Configuration配置
优势:XML难于调式,不能进行单元进行测试;
@Configuration用@Component元注解创建,因此自动检测时要注意使用Filter来排除;
@Import和@ImportResource可以导入配置;
@EnableWebMvc:启用web mvc;

spring的生命周期和回调接口:在Spring实战中有介绍,使用Aware接口;

6. bean definition profile
profile文件一般可以进行一些基本配置的设置,一个常用的手段是在开发和生产环境使用不同的profile文件便于切换;
声明
使用@Profile可以载入对应的profile文件,可以新建两个配置类,分别用于开发和生产模式,使用不同的profile;
激活
<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>development</param-value>
</context-param>

@Profile也是一个元注解,推荐使用自定义注解的方式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值