Spring(一)

2019-07-08  本文已影响0人  IT_lz

一、Spring简介

Spring是一个轻量级开源框架,以Ioc和AOP为内核,使用基本的javaBean来完成开发工作。

Ioc(控制反转, Inversion of Control): 通常java类引入另外一个类时,通常需要new一个对象。在Spring中,可以将new的过程,通过Spring创造出来,这样控制权就交给了Spring,实现了控制反转的效果。

二、Spring的核心容器

1、BeanFactory

是一个管理Bean的工厂,主要负责管理各种初始化Bean,并调用他的生命周期方法。

子类:XmlBeanFactory,该类会装配xml中定义的Bean。

BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("F:/applicationContext.xml"))

2、ApplicationContext

是BeanFactory的子接口,包含了它的所有功能。

BeanFactory和ApplicationContext都可以记载xml中配置的Bean文件。只是如果某个bean的某个属性未注入,则BeanFactory会在调用getBean时报错,而ApplicationContext则在初始化时自检,这样有利于检查所以来的属性是否注入。

三、Spring简单入门

1、导入包至WEB-INF

commons-logging-1.2.jar

spring-beans-4.3.6.RELEASE.jar

spring-context-4.3.6.RELEASE.jar

spring-core-4.3.6.RELEASE.jar

spring-expression-4.3.6.RELEASE.jar

2、创建UserDao及其实现类

public interface UserDao {
    void say();
}

public class UserDaoImpl implements UserDao {
    @Override
    public void say() {
        System.out.println("UserDao ------");
    }
}

3、创建applicationContext.xml文件,对UserDao进行配置

<?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="userDao" class="com.liu.dao.daoImpl.UserDaoImpl"/>
</beans>

4、编写测试类进行测试

public class MyTest {

    @Test
    public void test01() {

        ApplicationContext applicationContext = new           ClassPathXmlApplicationContext("applicationContext.xml");

        UserDao userDao = (UserDao) applicationContext.getBean("userDao");

        userDao.say();
    }

}

四、依赖注入

1、依赖注入的实现方式

在一个类中想引用另外一个类的实例,叫做依赖注入。

2、Setter注入简单实例

public interface UserService {
    public void say();
}

public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void say() {
        this.userDao.say();
        System.out.println("----UserServiceImpl---");
    }
}

3、构造方法注入简单实例

在Setter注入的基础上,只需略微改动即可完成。

public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

//    public void setUserDao(UserDao userDao) {
//        this.userDao = userDao;
//    }

    @Override
    public void say() {
        this.userDao.say();
        System.out.println("----UserServiceImpl---");
    }
}

4、Bean相关属性

4、Bean的实例化

// 1、创建工厂
public class MyBean2Factory {

    public Bean1 createBean(){
        return new Bean1();
    }
    
}

// 2、配置bean
<bean id="mybean2factory" class="com.liu.ioc.MyBean2Factory"/>
<bean id="bean3" factory-bean="mybean2factory" factory-method="createBean"/>

// 3、代码调用
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean1 bean1 = (Bean1) applicationContext.getBean("bean3");
System.out.println(bean1);

6、Bean的作用域

7、Bean的装配

上一篇 下一篇

猜你喜欢

热点阅读