Spring-002-bean管理(XML文件配置)

Bean实例化的方式

  • 在spring里面通过配置文件创建对象

  • bean实例化三种方式实现

    • 使用类的无参数构造创建(重点/主要使用)
    
    

    如果类里面没有无参构造则会出错

    • 使用静态工厂创建

    创建一个静态方法,返回类对象

    
     
    
    • 使用实例工厂创建

    创建不是静态的方法,返回类对象

     
     
    
    
    
    
    

bean标签常用属性

  1. id属性
    给bean起名字,id属性值名称不能包含特殊符号,根据id得到配置对象
  2. class属性
    创建对象所在的类的全路径
  3. name属性
    跟id属性一样,但是id属性值不能包含特殊符号 但是name属性值里面可以包含特殊符号,不过目前都用id
  4. scope属性
    属性值有
    • singleton:默认值,单例的 对象只能创建一次
    • prototype: 多例的 每次创建都是一个新的对象
    • request:创建对象把对象放在request域里面
    • session:创建对象吧对象放在session里
    • globalSession:创建对象把对象放在globalSession里面全局Session 单点登录

属性注入

  1. 创建对象时候 向类的属性设置值
  2. 属性注入的方式(三种)
    1. set注入
      Spring-002-bean管理(XML文件配置)_第1张图片
      image
    2. 有参数构造注入
      Spring-002-bean管理(XML文件配置)_第2张图片
      image
    3. 接口注入 不常用
      Spring-002-bean管理(XML文件配置)_第3张图片
      image
  3. spring中只支持前两种方式
    1.使用有参构造函数注入(不常用)
    applicationContex.xml:
       
    
    
    
       
    
    
    public class PropertyDemo1 {
    private String username;
    
    public PropertyDemo1(String username) {
        super();
        this.username = username;
    }
    public void test1(){
        System.out.println("demo1++++"+username);
    }
    

}

2.使用set注入

public class Book {
    private String bookname;


    public String getBookname() {
        return bookname;
    }


    public void setBookname(String bookname) {
        this.bookname = bookname;
    }


    public void demobook(){
        System.out.println("book:"+bookname);
    }
}

        
        
     

注入对象类型属性

  1. 创建 service类和dao类

    1. 在service得到dao对象:
  2. 具体实现过程

    1. 在Service里面擦dao作为类型属性
    2. 生成dao类型的属性的set方法
    public class UserService {
    //定义一个dao类型属性  
        private UserDao userDao;
        //生成set方法
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    }
    
    
    
    
        
         
    
    
    
    
    

P名称空间注入

public class Person {
    private String pname;

    public void setPname(String pname) {
        this.pname = pname;
    }
    public void test1(){
        System.out.println("person..."+pname);
    }
}
  
    

注入复杂类型

  1. 数组
  2. list集合
  3. map集合
  4. properties类型

        
        
            
                lily
                lucy
                jack
            
        
        
        
            
                李四
                张三
                王五
            
        
        
        
            
                
                
                
            
        
        
        
            
                com.mysql.jdbc.Driver
                root
            
            
        
    
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class Person {
    private String pname;
    private String[] arrs;
    private List list;
    private Map map;
    private Properties properties;
    public void setPname(String pname) {
        this.pname = pname;
    }
    public void setArrs(String[] arrs) {
        this.arrs = arrs;
    }
    public void setList(List list) {
        this.list = list;
    }
    public void setMap(Map map) {
        this.map = map;
    }
    public void setProperties(Properties properties) {
        this.properties = properties;
    }
    public void test1(){
        System.out.println("person..."+pname);
        System.out.println("arrs..."+Arrays.toString(arrs));
        System.out.println("list..."+list);
        System.out.println("map..."+map);
        System.out.println("Properties..."+properties);
    }
}

输出结果:


image

IOC和DI的区别

IOC:控制反转,把对象创建交给spring进行配置
DI: 依赖注入, 向类里面的属性注入值
关系:依赖注入不能单独存在,需要在ioc基础之上完成操作

Spring整合web项目

  1. 加载spring核心配置文件
    //加载spring配置文件,根据创建对象
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContex.xml");
    
    1. new对象,功能可以实现,效率很低
  2. 实现思想:把家在配置文件和创建对象的过程,在服务器启动时候完成
  3. 实现原理
    1. ServletContext对象
    2. 监听器
    3. 具体使用:
      • 在服务器启动时候,为每个项目创建一个ServletContext对象
      • 在ServletContext对象创建的时候,使用监听器可以具体到ServletContext对象在什么时候创建
      • 使用监听器监听到ServletContext对象创建时候,
        • 加载spring配置文件,把配置文件配置对象创建
        • 把创建对象放到ServletContext域对象里面(setAttribute方法)
      • 获取对象时候,到ServletContext域得到(getAttribute()方法)

你可能感兴趣的:(Spring-002-bean管理(XML文件配置))