问题1、完成例题1.3spring入门程序。修改根包为edu.javaee.spring
(这里跟着视频做的,没有修改根包)
UserDao.java(接口类)
package com.itheima.ioc;
public interface UserDao {
public void say();
}
UserDaoImpl.java
package com.itheima.ioc;
public class UserDaoImpl implements UserDao {
@Override
public void say() {
System.out.println("userDao say hello World");
}
}
TestIoc.java
package com.itheima.ioc;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestIoc {
public static void main(String[] args) {
//1,初始化spring容器,加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//2,通过容器获取userDao实例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
//3,调用实例方法
userDao.say();
}
}
运行结果:
问题2、spring的优点是什么?
1、轻量:基础版本只有2MB
2、解耦方便:通过控制反转,实现松散耦合,对象们给出他们的依赖,而不是通过创建或查找对象的依赖
3、支持AOP:通过面向切面编程,实现业务逻辑和系统服务分开,方便的实现对程序进行权限拦截、运行监控等功能
4、支持声明式事务:spring提供事务管理接口,实现本地事务和全局事务的管理
5、异常处理:提供异常处理接口,把hibernate或者jdbc的异常转为一致的unchecked异常
6、利于测试,Spring支持Junit,可以通过注解配置,方便测试
7、易于集成其他优秀框架,Spring内部提供了对各种优秀框架的支持
8、降低J2EE API的使用难度,Spring对J2EE开发中非常难用的API,都提供了封装,使用这些API的难度大大降低
问题3、spring的Ioc和DI的概念理解?
Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。