前期准备
Spring 是什么?
Spring 是一个开源框架
Spring 是为简化企业级开发而生的,spring 大大提高了 JavaBean 的功能(在 spring 出现以前 JavaBean 几乎要被 EJB 替换掉了)
Spring 是一个 IoC/DI 和 AOP 容器框架
Spring 的特性
Sping 是非侵入性的
IoC/DI: Inversion of Control / Dependency injection
AOP:Aspect oriented programming
一站式的框架
新建一个 java 项目,然后导入 spring 必要的架包:
现在我们使用 Spring 来实现一个添加用户的操作,功能描述
我们需要在 main 方法中实现一个增加用户的功能
整个功能需要按照 MVC 分层来实现
main 方法去访问 service,service 访问 DAO,DAO 去访问 model 并将信息存入数据库中
采用spring XML配置实现
先看一下目录结构:
然后代码如下:
public interface UserDao {
public void save(User user);
}
接口 UserDao 就是定义一个保存用户到数据库的接口,可以让子类实现不同的保存用户形式。
public class UserDaoImp1 implements UserDao{
public void save(User user){
System.out.println("数据存入MYSQL");
System.out.println(user.getName());
}
}
UserDaoImp1 类实现了 UserDao,将用户存入MySQL,这里就用打印代替插入数据库了。
public class UserDaoImp2 implements UserDao{
public void save(User user){
System.out.println("数据存入Oracle");
System.out.println(user.getName());
}
}
UserDaoImp2 类实现了 UserDao,将用户存入 Oarcle,这里也用打印代替插入数据库了。
public class User {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
User 实体类,用户有年龄和姓名
public class UserService {
private UserDao userDao;
private User user;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void save() {
this.userDao.save(user);
}
}
UserService 业务类,userDao 和 user 通过 spring 依赖注入,同时有一个 save 方法调用 dao 的 save 方法实现插入数据库操作。
<?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.xsd">
<bean id="userService" class="com.dpqi.spring.userservice.UserService">
<property name="userDao" ref="userDaoImp2"/>
<property name="user" ref="user"/>
</bean>
<!-- id是托管给Spring后该资源的名字,class是要托管的资源地址 -->
<bean id="userDaoImp1" class="com.dpqi.spring.Dao.impl.UserDaoImp1">
</bean>
<bean id="userDaoImp2" class="com.dpqi.spring.Dao.impl.UserDaoImp2">
</bean>
<bean id="user" class="com.dpqi.spring.model.User">
<property name="age" value="20"/>
<property name="name" value="小白"/>
</bean>
</beans>
Beans.xml spring 的配置文件。bean 中有两个属性,其中 class 是要托管的资源地址,id 是这个资源的名字,通常第一个字母要小写。Bean 中还有一个 property 标签,其中 name 属性是你托管资源中的成员变量,value 是普通类型的值,ref 是对象类型的值。在 spring 中对象也是用字符串表示的,所以 ref 中写的就是对象在 bean 中的 id 值。
我们这里就给 user 年龄赋值 20,姓名小白,然后给 userService 指定 user 和 userDao。
public class UserMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
UserService userService=context.getBean("userService",UserService.class);
userService.save();
}
}
UserMain,在 java 项目中要想启动 spring 必须要创造一个容器,然后运行一个 bean 资源。context.getBean 中第一个参数填写 bean 中这个资源的 id,第二个参数填写这个资源本身的类名。然后运行,结果如下:
这样一个通过xml配置的 spring java 项目就搞定了!