Spring知识小计1

2021-03-08 08:28

阅读:673

标签:应用   spring   list   三种方式   ESS   文件   --   set   需要   

1. Bean标签

取值范围 说明
singleton 这是默认值,单例
prototype 多例
request WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中
session WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中
gloable session WEB 项目中,应用在 Portlet 环境,如果没有 Portlet 环境那么globalSession 相当于 session

1.1 当scope的取值是singleton的时候

  • Bean的实例化个数:1

  • Bean的实例化时机:当Spring的核心文件被加载的时候

    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
    
  • Bean的生命周期:

    • 创建:应用进行加载,容器创建的时候,对象被创建
    • 运行:只要容器还在,对象就一直存在
    • 销毁:应用卸载,容器销毁的饿时候,对象就被销毁了

1.2 当scope的取值是prototype的时候

  • Bean的实例化个数:多个,每次进行调用getBean的时候,都会实例化新的对象

  • Bean的实例化时机:调用getBean的时候

    Object userService = applicationContext.getBean("userService");
    
  • Bean的生命周期

    • 对象创建:当使用对象时,创建新的对象实例
    • 对象运行:只要对象在使用中,就一直活着
    • 对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了

2. 如何进行Bean的实例化

有三种方式:无参构造方法实例化工厂静态方法实例化工厂实例方法实例化

2.1 无参构造方法

这样就可以利用UserDao userDao = (UserDao)applicationContext.getBean(“userDao”);获得UserDao的对象了。

2.2 工厂静态方法

既然是工厂方法,肯定要先构造一个工厂放到spring容器中

public class StaticFactoryBean {
    public static UserDao createUserDao(){    
    	return new UserDaoImpl();
    }
}

其中factory-method是用来指向具体的方法的,这里因为是静态的,因此通过getBean()方法后会或的对应的class的属性,进而得到对应的类(不是类的对象),最后在根据factory-method方法来表明这个类应该调用那个方法来返回所需要的对象

2.3 工厂实例方法

public class DynamicFactoryBean {  
	public UserDao createUserDao(){        
		return new UserDaoImpl(); 
	}
}

3. Bean的依赖注入

依赖注入式Spring框架核心IOC的具体实现。在编写程序的时候,由于IOC的存在,对象的创建权被交给了Spring,但是代码中不可能出现没有依赖的情况,IOC的存在也只是降低了耦合而不是消灭了耦合。

3.1 依赖注入的两种方式

  • 构造方法注入(引用类型数据的注入为例)

  • set方法注入,引用类型数据的注入为例,如果是用的是xml方式的话set方法不能省略,但是如果使用的是注解方式,那么set方法可以省略)

    public class UserServiceImpl implements UserService {
        private UserDao userDao;
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;  
        } 
        @Override    
        public void save() {      
       		 userDao.save();
    	}
    }
    
    • 如果使用set方法注入,并且注入数据少的话可以使用p命名空间注入(就是简化了而已)。 P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中,如下:

      • 首先,需要引入P命名空间:

        xmlns:p="http://www.springframework.org/schema/p"
        
      • 其次,需要修改注入方式:

3.2 依赖注入的数据类型

  • 普通数据类型

    public class UserDaoImpl implements UserDao {
    	private String company;
        private int age;
        public void setCompany(String company) {
            this.company = company;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override   
        public void save() {
            System.out.println(company+"==="+age);
            System.out.println("UserDao save method running....");   
        }
    }
    
  • 引用数据类型

    public class UserServiceImpl implements UserService {
        private UserDao userDao;
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;  
        } 
        @Override    
        public void save() {      
       		 userDao.save();
    	}
    }
    
  • 集合数据类型

    • List

      public class UserDaoImpl implements UserDao {
      	private List strList;
      	public void setStrList(List strList) {
      		this.strList = strList;
      	}
          @Override   
      	public void save() {
              System.out.println(strList);
              System.out.println("UserDao save method running....");
      	}
      }
      
      aaabbbccc
    • List

      public class UserDaoImpl implements UserDao {
      	private List userList;
      	public void setUserList(List userList) {
      		this.userList = userList;  
       	}
          @Override   
      	public void save() {
      		System.out.println(userList);
      		System.out.println("UserDao save method running....");
      	}
      }
      
    • Map

    • Properties

      public class UserDaoImpl implements UserDao {
          private Properties properties;
          public void setProperties(Properties properties) {
              this.properties = properties;
          }
          
          @Override 
      	public void save() {
      		System.out.println(properties);
      		System.out.println("UserDao save method running....");
      	}
      }
      
      aaabbbccc

Spring知识小计1

标签:应用   spring   list   三种方式   ESS   文件   --   set   需要   

原文地址:https://www.cnblogs.com/xiaoqingnianXQP/p/14206400.html


评论


亲,登录后才可以留言!