注意:所有文章除特别说明外,转载请注明出处.
注意:这里自定义FreeMarkerView的目的是为了放一些公共的变量到FreeMarkerView模板里面。
注意:所有文章除特别说明外,转载请注明出处.
注意:所有文章除特别说明外,转载请注明出处.
Spring 的 AbstractApplication 是 ApplicationContext 的抽象实现类,该抽象实现类的 refresh() 方法定义了Spring容器在加载配置文件后的各项处理过程,这些处理过程清晰刻画Spring容器启动时所执行的各项操作。
//refresh()方法内部定义的执行逻辑
//1. 初始化BeanFactory Spring将配置文件信息装入容器的Bean定义注册表(BeanDefinitionRegistry)中,但是此时Bean还没有初始化。
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
//2. 调用工厂后处理器 根据反射机制从 BeanDefinitionRegistry 中找出所有实现了 BeanFactoryPostProcessor 接口的Bean,并调用其 postProcessBeanFactory() 接口方法。
invokeBeanFactoryPostProcessors();
//3. 注册Bean后处理器 根据反射机制从 BeanDefinitionRegistry 找到所有实现了 BeanPostProcessor 接口的Bean,并将它们注册到容器Bean后处理器的注册表中。
registerBeanPostProcessors();
//4. 初始化消息源 初始化容器的国际化消息资源
initMessageSource();
//5. 初始化应用上下文事件广播器 初始化应用上下文事件广播器。
initApplicationEventMulticaster();
//6. 初始化其它特殊Bean:由具体子类实现
onRefresh();
//7. 注册事件监听器
registerListeners();
//8. 初始化所有单实例的Bean,使用懒加载模式的Bean例外 初始化所有Bean之后将它们放在Spring容器的缓存池中。
finishBeanFactoryInitialization(beanFactory);
//9. 完成刷新并发布容器刷新事件 创建上下文刷新事件,事件广播器负责将这些事件广播到每个注册的事件监听器中。
finishRefresh();
注意:所有文章除特别说明外,转载请注明出处.
1.MyBatis全局配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- setting配置根据需要再添加 -->
<!-- 配置别名 -->
<typeAliases>
<package name="ssm.po"/>
</typeAliases>
<!-- mapper这里不需要配置了,因为跟spring整合后,在spring那边会进行mapper的扫描
但必须遵循:mapper.xml和mapper.java必须同名且在一个目录
-->
</configuration>
提示:这里可以看出整合过程中已经没有什么内容了,因为数据源 mapper这些都交给Spring去管理。
注意:所有文章除特别说明外,转载请注明出处.
(Inversion of Control):控制反转
控制:资源的获取方式
主动式:(要什么资源自给创建即可)
1 | BookServlet{ |
被动式:资源的获取不是我们自己创建,而是交给容器来管理,创建和设置。
1 | BookServlet{ |
容器:管理所有得组件(有功能的类),假设BookServlet受容器管理,BookService也是受容器管理的;
那么容器可以自动探查出那些组件(类)需要用到另一个组件,容器帮我们创建BookService对象,并赋值。
==容器:主动获取变为自动接收。==
注意:所有文章除特别说明外,转载请注明出处.
解决:直接在网上下载一个 tcnative-1.dll 64位的复制到tomcat/bin目录下即可,这里是因为两者冲突造成。
注意:所有文章除特别说明外,转载请注明出处.
在Java中与redis连接的驱动有很多,目前广泛使用的是Jedis,其它的还有Lettuce/Jredis和Srp。Spring提供一种RedisConnectionFactory接口,通过此接口可以生成一个RedisConnection接口对象,而该接口对象是对Redis底层接口的封装。
注意:所有文章除特别说明外,转载请注明出处.
<!-- shiro 配置 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>
注意:所有文章除特别说明外,转载请注明出处.
Spring提供了HandlerInterceptor
接口和HandlerInterceptorAdapter
适配器。实现这个接口或继承此类,就可以实现自己的拦截器。接口HandlerInterceptor
包含三个方法,每个方法的参数handler
,用来指向下一个拦截器。此类似于Servlet开发中的Filter,用于对请求进行拦截和处理。