Spring学习一
什么是Spring
Spring是一个以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programing)为内核的框架。
什么是IoC
IoC,既控制反转,是一种设计思想。与传统Java SE程序设计不同,IoC是通过专门的容器,由容器来创建对象,对象之间的关系本来是由我们开发者自己创建和维护的,在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事授权给了容器。
什么是DI
DI,既依赖注入。由IoC容器在运行期间动态地将某种依赖关系注入对象之中。
Spring基础包说明
包名 | 说明 |
---|---|
spring-core-xxx.RELEASE.jar | 包含spring框架基本的核心工具类,spring其他组件都要用到这个包里的类 |
spring-beans-xxx.RELEASE.jar | 包含访问配置文件、创建和管理bean以及进行IoC或者DI操作相关的类 |
spring-context-xxx.RELEASE.jar | spring提供了在基础IoC功能上的扩展服务,还提供许多企业级服务的支持,如任务调度、JNDI定位、EJB集成、远程访问、缓存、邮件服务以及各种视图层框架的封装等 |
spring-expression-xxx.RELEASE.jar | 定义了spring的表达式语言 |
代码实现
导入jar包
将Spring的4个基础包以及commons-logging的jar包导入到项目中,并发布到类路径下。
代码编写
(1)在新建的项目(chapter01)中,新建一个包(com.ssm.ioc_di),在包中创建接口UserDao。
UserDao.java
package com.ssm.ioc_di;
public interface UserDao {
public void login();
}
(2)在包中创建接口UserDao的实现类UserDaoImpl。
UserDaoImpl.java
package com.ssm.ioc_di;
public class UserDaoImpl implements UserDao{
public void login() {
System.out.print("UserDao login");
}
}
(3)在包中创建配置文件,applicationContext.xml,并在配置文件中创建id为UserDao的bean。
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- bean definitions here -->
<bean id="UserDao" class="com.ssm.ioc_di.UserDaoImp1"/>
</beans>
(4)在包中创建测试类IoC.
IoC.java
package com.ssm.ioc_di;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class IoC {
public static void main(String[] args) {
// TODO Auto-generated method stub
String XmlPath="com/ssm/ioc_di/applicationContext.xml";
ApplicationContext context=
new ClassPathXmlApplicationContext(XmlPath);
UserDao userdao=(UserDao)context.getBean("UserDao");
userdao.login();
}
}
运行结果
问题总结
1、jar包不能直接复制到项目中,必须要发布到类路径。不然jar包没法引用。
2、导入jar包必须把4个基础包和commons-logging的jar包都引入。不然会报构造函数ClassPathXmlApplicationContext(字符串)引用缺失类型BeansException的错误。