自定义Spring框架 (上)

89 阅读1分钟

自定义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.最后汇总为一个主方法