Spring
spring的初识:
spring框架的特点:
spring框架是一个项目管理框架,底层是使用了23种设计模式中的工厂设计模式,用来将现有项目中的每一个组件
(Action(controller)、Service、Dao 事务相关等等)统一成产、管理。
由于spring底层是使用工厂模式,所以我们也成为 工厂、容器。
spring的两大核心思想:
IOC(Inversion of Control)控制反转
将原来需要手动创建的对象的权利交给速配能,由spring去创建。知道IOC之后不得不提在spring中另外一个很重要的概念:DI(Depend Injection)依赖注入。spring不仅要创建对象,还要维护类与类之间的关系,所以在IOC的基础上提出了依赖注入的概念。
AOP(面向切面编程)
对于AOP将在下一篇文章中为大家具体介绍。
spring工厂的搭建:
1、导入spring依赖的jar
2、书写配置文件
位置随意,名字随意(一般放在根目录下,以spring为名【spring.xml】)
注意:在开发过程中需要工具(myeclipse)自动提示的话,需要导入相应的xsd文件。
3、通过bean标签管理java类型
spring.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-3.2.xsd ">
<!-- 配置userDao bean id:唯一标识 class:包名.类名 -->
<bean id="userDao" class="spring.UserDaoImpl"></bean>
<!-- 配置userService -->
<bean id="userService" class="spring.UserServiceImpl">
<!-- property:依赖注入,为哪一个变量注入
name:"为哪个成员变量赋值" 成员变量的名字
ref:注入bean的id
-->
<property name="userDao" ref="userDao"/>
</bean>
</beans>
4、启动工厂测试
ClassPathXmlApplicationContext()的参数为配置文件所在的路径
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring.xml");
dao层:
package spring;
/**
* userDao
* @author MOTUI
*
*/
public interface UserDao {
public void save();
}
dao实现类:
package spring;
public class UserDaoImpl implements UserDao{
@Override
public void save() {
System.out.println("-------save方法-------");
}
}
service层:
package spring;
public interface UserService {
public void save();
}
service实现类:
package spring;
public class UserServiceImpl implements UserService{
//依赖注入的一种方式,后续介绍
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
测试类:
package spring;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 测试类
* @author MOTUI
*
*/
public class TestUserDao {
@Test
public void Test(){
//加载工厂
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring.xml");
//获取工厂中的组件
//getBean()的参数:与配置文件中的bean的id对应。
UserDao userDao = (UserDao)context.getBean("userDao");
//调用方法
userDao.save();
//获取service组件
UserService userService = (UserService)context.getBean("userService");
//调用方法
userService.save();
}
}
测试结果为:
-------save方法-------
-------save方法-------
附上源码:
源码