自定义spring框架(上)
Spring的使用
dao层
UserDao接口
impl/UserDapimpl实现类
package dao;
/**
* @version v1.0
* @ClassName: UserDao
* @Description: 数据访问层接口
* @Author: wuxie
*/
public interface UserDao {
public void add();
}
===========================实现类
package dao.impl;
import dao.UserDao;
/**
* @version v1.0
* @ClassName: UserDaoImpl
* @Description: 数据访问层实现类
* @Author: wuxie
*/
public class UserDaoImpl implements UserDao {
private String username;
private String password;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public UserDaoImpl() {
System.out.println("userDao被创建了");
}
public void add() {
System.out.println("UserDao ..." + username + "==" + password+"age:"+age);
}
}
application.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" >
<bean id="userDao" class="dao.impl.UserDaoImpl">
<property name="username" value="412"></property>
<property name="password" value="124"></property>
<property name="age" value="123"></property>
</bean>
<bean id="userService" class="service.impl.UserServiceImpl">
<property name="userDao" ref="userDao" ></property>
</bean>
</beans>
service层
UserService 接口
impl/UserServiceImpl 实现类 ::: details
package service;
/**
* @version v1.0
* @ClassName: UserService
* @Description: 业务逻辑层接口
* @Author: wuxie
*/
public interface UserService {
public void add();
}
========================实现类
package service.impl;
import dao.UserDao;
import service.UserService;
/**
* @version v1.0
* @ClassName: UserServiceImpl
* @Description: 业务逻辑层实现类
* @Author: 黑马程序员
*/
public class UserServiceImpl implements UserService {
//声明一个UserDao类型的变量
private UserDao userDao;
public UserServiceImpl() {
System.out.println("userService被创建了");
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add() {
System.out.println("UserService ...");
userDao.add();
}
}
controller层
package controller;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.UserService;
/**
* @version v1.0
* @ClassName: UserController
* @Description: TODO(一句话描述该类的功能)
* @Author: wuxie
*/
public class UserController {
public static void main(String[] args) throws Exception {
//1,创建spring的容器对象(无延迟的,获得bean的时候进行实例化)
1.加载配置
2.根据名称获得bean
3.因为bean里面有ref,实现依赖注入
4.最后add方法,使用到userdao的数据
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//有延迟的
// BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
//2,从容器对象中获取userService对象
// UserService userService = beanFactory.getBean("userService", UserService.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
//3,调用userService方法进行业务逻辑处理
userService.add();
}
}
springioc框架的构造
简易spring ioc的构造
1.用户在application.xml里面创建bean
2.spring解析配置文件获取bean对象,读取其id和class(所在路径),创建出bean对象
再读取里面的property,创建property对象,并且通过其ref属性,进行依赖注入
3.最后汇总为一个主方法