1、面试题
谈谈对Spring框架的理解
- Spring是一个封层的一站式开发的轻量级开源框架,通过配置文件中的<bean>元素配置用于创建实例对象的类名和实例对象的属性。
- Spring提供支持 IOC 和 AOP 技术,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的程序过度耦合。,通过AOP也可以对某个方法进行操作,例如:权限验证
- Spring对Junit4支持,方便程序测试。
- 声明式事务支持,只要在配置文件中配置后,不用程序员在代码编写
- 降低了JavaEE的API使用难度,Spring框架对对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装。
同时Spring方便集成各种优秀框架,如Hibernate,struts2。
Spring控制反转(IOC)和依赖注入(DI)的区别
- IOC是控制反转,一般分为两种类型,依赖注入(Dependency Injection,简称<u>DI</u>)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。
- IOC控制反转,指将对象的创建权,反转到Spring容器, DI依赖注入,指Spring创建对象的过程中,将对象依赖属性通过配置进行注入Bean。
谈谈你对IOC的理解
有一个需求,A类要使用B接口中的方法,我们就需要A和B联系起来,通常情况下我们会在A类中创建B接口的实现类C的对象,这样A类和接口B两者之间的依赖关系太过于密切。而IOC就是在A类中定义一个关联B接口的方法(setter方法),将A类,B接口,C实现类放进IOC容器中,通过配置文件配置A类和C实现类的关联。
DI实现依赖注入的方式
- 接口注入
- Setter方法注入
- 构造方法注入
- spring4可以注解注入@Autowired
Spring的核心类有哪些,各有什么作用?
- BeanFactory:产生一个新的实例,可以实现单例模式
- BeanWrapper:提供统一的get及set方法
- ApplicationContext:提供框架的实现,包括BeanFactory的所有功能
Spring里面如何配置数据库驱动?
-使用”org.springframework.jdbc.datasource.DriverManagerDataSource”数据源来配置数据库驱动。示例如下:
1.<bean id=”dataSource”>
2. <property name=”driverClassName”>
3. <value>org.hsqldb.jdbcDriver</value>
4. </property>
5.
6. <property name=”url”>
7. <value>jdbc:hsqldb:db/appfuse</value>
8. </property>
9.
10. <property name=”username”><value>abc</value></property>
11. <property name=”password”><value>abc</value></property>
12.</bean>
Spring里面如何定义hibernate mapping?
- 添加hibernate mapping 文件到web/WEB-INF目录下的applicationContext.xml文件里面。示例如下:
1.<property name=”mappingResources”>
2. <list>
3. <value>org/appfuse/model/User.hbm.xml</value>
4. </list>
5.</property>