一.Spring入门

  1. IOC:控制反转,意思就是将自己手动创建类的过程交给spring容器自动创建;
  2. DI:注入 在spring基础之上进行注入;
  3. AOP:面向切面编程;

一.传统方式

一.Spring入门_第1张图片

接口类/**
 * 用户接口类
 */
public interface UserService {
    /**
     * 接口开发
     */
    public void sayHello();

}
//接口实现类
public class UserServiceImpl implements UserService {

    /**
     * 向用户问好
     */
    @Override
    public void sayHello() {
        System.out.println("Hello World");
    }

}
   /**
     * 传统方式开发
     * 使用new创建类
     */
    @Test
    public void demo1(){
        UserService userService = new UserServiceImpl();
        userService.sayHello();
    }

二.spring实例化bean

 

一.Spring入门_第2张图片

  • 配置文件
 
  • 测试类
/**
     * 使用spring的方式进行开发
     * 配置文件+工厂类+反射
     * 添加属性,只用在配置文件中添加,对这边的代码不影响;如果是传统的,就需要修改代码,如demo1;
     */
    @Test
    public void demo2(){
        //使用ApplicationContext,会在加载ApplicationContext文件的时候,加载文件中所有相关的类,
        //而BeanFactory则是在调用getBean的时候创建相关的类
        //ApplicationContext是BeanFactory的子类,功能比BeanFactory更多
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) applicationContext.getBean("userService");
        userService.sayHello();
    }
  • 说明:ApplicationContext与BeanFactory的区别:ApplicationContext会在加载配置文件的时候,一次将配置文件中的类实例化出来;BeanFactory会在调用getBean方法的时候,实例化对应的方法;

三.spring的三种实例化方式

  1. 使用类构造器实例化(默认无参数)
  2. 使用静态工厂方法实例化(简单工厂模式)
  3. 使用实例工厂方法实例化(工厂方法模式)

 

 第一种:构造方法实例化:

类默认是有无参构造器

 
    

/**
 * Bean的类的实例化的三种方式,采用无参数的构造方法的方式
 */
public class Bean1 {

    public Bean1(){
        System.out.println("123");
    }
}

测试

@Test
    public void demo1(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");
    }

第二种:静态工厂类方式

/**
 * 静态工厂实例化方式
 */
public class Bean2 {

}

    
public class Bean2Factory {

    public static Bean2 createBean2(){
        System.out.println("Bean2 通过静态工厂实例化");
        return new Bean2();
    }
}
@Test
    public void demo2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Bean2 bean2 = (Bean2) applicationContext.getBean("bean2");

    }

第三种:实例工厂方法实例化

package com.batac.demo2;

public class Bean3 {
}
package com.batac.demo2;

public class Bean3Factory {
    public Bean3 createBean3(){
        System.out.println("Bean3 通过非静态方式实例化");
        return new Bean3();
    }
}

    
    
 @Test
    public void demo3(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Bean3 bean1 = (Bean3) applicationContext.getBean("bean3");

    }

说明:

  •   id和name
  1.  一般情况下,装配一个Bean时,通过制定一个id属性作为Bean的名称;
  2.  id实行在IOC容器中必须是唯一的;
  3. 如果Bean的名称中含有特殊字符,就要使用name属性;         
  • class
  1. class用户设置一个类的完全路径名称,主要作用是IOC容器生成类的实例;

spring工厂类:

一.Spring入门_第3张图片

你可能感兴趣的:(Java后台,Java)