目录
@、什么是Spring框架?什么特点?
轻量:
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。
核心的两部分:
ioc:控制反转,把对象创建交给spring管理
- 比如现在有类,类名称User,如果创建User对象,原始new User(),
- 使用spring框架之后,创建对象不需要使用new方式了,在spring使用配置方式把对象进行创建
(1)基于xml配置文件
(2)基于注解
aop:面向切面编程,扩展功能不是通过修改源代码实现
Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。
(1)xml配置文件
(2)dom4j解析xml
(3)工厂设计模式
(4)反射
使用工厂类解耦和操作:
容器:Spring包含并管理应用对象的配置和生命周期,在这个意义上它是 一种容器.
框架:Spring可以将简单的组件配置、组合成为复杂的应用。
* 核心技术 IoC 和 AOP
* 数据访问 (持久层解决方案)
* Web层解决方案 SpringMVC
* 集成 (整合其他开源框架)
@、spring常用注解?
@Controller
public class ContentCatController {
@Autowired
private ContentCatService contentCatService;
@RequestMapping("/content/category/list")
@ResponseBody
public List<EasyUITreeNode> getContentCatList(@RequestParam(value="id", defaultValue="0") long parentId) {}
@RequestMapping("/item/{itemId}")
@ResponseBody
public TbItem getItemById(@PathVariable Long itemId) {
TbItem tbItem = itemService.getItemById(itemId);
return tbItem;
}
@、Spring有哪些优点?
1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
2.可以提供众多服务,事务管理,WS等。
3.AOP的很好支持,方便面向切面编程。
4.对主流的框架提供了很好的集成支持,如hibernate,Struts2等
5.Spring DI机制降低了业务对象替换的复杂性。
6.Spring属于低侵入,代码污染极低。
7.Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部
@、Spring有哪些缺点?
- jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
- Spring不支持分布式,这也是EJB仍然在用的原因之一
@、spring中的核心类有那些,各有什么作用?
BeanFactory:产生一个新的实例,可以实现单例模式
BeanWrapper:提供统一的get及set方法
ApplicationContext:提供框架的实现,包括BeanFactory的所有功能
@、Spring里面如何配置数据库驱动?
使用”org.springframework.jdbc.datasource.DriverManagerDataSource”数据源来配置数据库驱动。示例如下:
<bean id=”dataSource”>
<property name=”driverClassName”>
<value>org.hsqldb.jdbcDriver</value> </property>
<property name=”url”>
<value>jdbc:hsqldb:db/appfuse</value>
</property>
<property name=”username”><value>sa</value></property>
<property name=”password”><value></value></property>
</bean>
@、介绍一下Spring的事务管理?
事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之 前的所有操作。
这样可以防止出现脏数据,防止数据库数据出现问题。
开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管 理,可以通过Spring的注入来完成此功能。
spring提供了几个关于事务处理的类:
TransactionDefinition //事务属性定义
TranscationStatus //代表了当前的事务,可以提交,回滚。
PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类 AbstractPlatformTransactionManager,我们使用的事务管理类.
例如DataSourceTransactionManager等都是这个类的子类。
一般事务定义步骤:
TransactionDefinition td = new TransactionDefinition();
TransactionStatus ts = transactionManager.getTransaction(td);
try
{ //do sth
transactionManager.commit(ts);
}
catch(Exception e){transactionManager.rollback(ts);}