spring

1、IOC容器(spring提供)

控制反转(对象创建权的转换)

由主动new产生对象,转换为由外部提供对象(被创建或管理的对象统称为Bean

        导入spring坐标


     org.springframework
     spring-context
     5.3.23

        定义spring管理的类(接口)

        spring配置文件,applicationContext.xml




    

    
    
    
    

2、DI依赖注入

建立Bean和Bean之间的依赖关系

java-app

        //3、获取IOc容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //4、获取bean
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
public class BookServiceImpl implements BookService {
    //5、删除业务层中使用new的方式创建的dao对象
    private BookDao bookDao;

    public void save(){
        System.out.println("book service save...");
        bookDao.save();
    }
    //6、提供对应的set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

applicationContext.xml 


      
      
      

##IoC管理service和Dao,通过配置将被管理的对象——>ioc

##通过接口获取ioc容器,接口方法获取Bean

##通过pom文件导入坐标

3、bean

name控制一个bean有多个名称

spring默认bean单例(创建的对象反复使用)(使用无参构造器)

(封装实体的域对象、不适合交给容器管理)

作用范围:一个bean的创建是否是单例

实例化:

    
    
    
    
    
    
    
    
    

        静态工厂

public class OrderDaoFactory {
    public static OrderDao getOrderDao(){
        return new OrderDaoImpl();
    }
}

        方法四: 

public class UserDaoFactoryBean implements FactoryBean {
    //代替原始实例化工厂中创建对象的方法
    @Override
    public UserDao getObject() throws Exception {
        return new UserDaoImpl();
    }

    @Override
    public Class getObjectType() {
        return UserDao.class;
    }
}

bean生命周期

    
    
    
    InitializingBean
    DisposableBean

关闭容器

ConfigurableApplicationContext

        close()

        registerShutdownHook()

你可能感兴趣的:(Java,spring,java)