1. Spring mvc:
很多企业只使用Spring+Hibernate框架,不使用Struts2+hiber+Spring。
2. Spring上下文
Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如:国际化,(org.springframework.web.servlet.i18n.SessionLocaleResolver)字符编码(org.springframework.web.filter.CharacterEncodingFilter)
3. AOP注入(面向切面编程(也叫面向方面))(事务管理机制体现)
通过配置管理特征。Spring AOP模块直接将面向方面的编程功能集成到Spring框架上来了。典型的应用是:事务管理。这个本人认为Spring对我最实用的地方,感觉没它不行。写方法的时候,我就不用去管如果插入不成功,我要手动去删除以前保存的数据。只关心我要做的事情。我称之为:面向方面编程让面向对象编程更面向对象编程。我不知道说得对不对,我是这样说的。例如:
sPart = (SPart)this.getHibernateTemplate().merge(sPart);
this.getHibernateTemplate().flush();
上面的语句已经被提交,可以查询出来,并且已经有id了。原则上在数据库已经存在。但是,如果在同一个事务中的其他方法不成功,这些数据在被删除(回
4. Spring定时器(quartz)
系统中很多时候都需要定时做某件事的需求,比如:定时更新首页新闻、定时更新查询索引,定时修改一些数据等等。
5. IOC模式(控制反转(依赖注入))
核心容器的主要组件是BeanFactory,他是工厂模式的实现,BeanFactory使用了控制反转(IOC)模式将应用程序的配置和依赖行规范与实际应用代码分开。另外一个名为:依赖注入
我个人对IOC一直印象不深刻。因为有了它让我获得太舒服了。还以为我本来就这样写,这样写天经地义,就像我们对父母的好容易忽视一样。例如下面的代码:
1、在测试类、main方法中:
ApplicationContext context = new FileSystemXmlApplicationContext(
"applicationContext.xml");
Animal animal = (Animal) context.getBean("animal");
animal.say();
2、在控制器中:
private ISysCountService sysCountService = null;
publicvoid setSysCountService(ISysCountService sysCountService) {
this.sysCountService = sysCountService;
}
这些都不陌生吧,但是这是ICO模式的实例。我注意到这个地方是因为有一个新同事进公司,访问数据不成功。后来我帮他加上了这个就行了。他就问我为什么呢?我说注入啊。他又问:注入怎么呀?我脑子一翁,“对呀,注入什么呀?当然是注入服务接口,让控制器能直接调用我们在接口的方法,但为什么这样注入,注入后访问的原理是什么呢?”我都蒙了。读书的时候去想过,后来没注意。原理这里就不写了,本文主要是记录Spring有哪些常用的功能在项目可以见到。
6. Spring DAO
IOC在项目的使用过程会有它的影子:
<bean name="/login.htm" class="cn.com.union.controller.LoginController">
<property name=" sysCountService"
ref=" sysCountService" />
<property name="methodNameResolver" ref="methodNameResolver" />
</bean>
<property name="sysCountService"中的sysCountService在控制器中找到吧?不是 IOC注入的服务接口嘛。ref=" sysCountService"指向bsoBean.xml:
<bean id=" sysCountService"
class="cn.com.union.bso.SysCountServiceImp">
<property name="sessionFactory" ref="sessionFactory" />
<property name="dataBaseAdapter" ref="dataBaseAdapter" />
</bean>
这个类是接口的实现类,终于见到和DAO有点关系了。
7. Spring ORM
这个我是实在想不通,这个名词是偶然见到的。ORM(Object/Relation Mapping的简称),从名字看,我最先想到的数Hibernate的事呀,怎么是Spring ORM来啦。在项目中找有没有它的影子呢?
在applicationContext.xml发现与实体类相关的影子的代码,不知道对不对。
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/cn/com/adtech/riss2/domain</value>
</list>
</property>
看到这里我突然想起我当时学编程的时候,没有把Hibernate和Spring分开讲,连接数据库一致都是用这样的配置方式。所以没有印象。在马士兵的视频教程-Hibernate篇好像单独配置Hibernate连接数据库不是这样连接的。我就记得我们老师当年把两个结合起来讲的理由是:现在大部分企业级应该都是用Spring提供的配置方式代替Hibernate的配置方式。