关于Spring核心容器

spring是一种开源框架,不像控制层框架Struts2、SpringMVC一样接受请求,作出响应,
也不像持久层框架Hibernate、Mybatis一样操作数据库,spring只是充当一种粘合剂,与控制层框架、持久层框架无缝集成。

Spring的两大核心是控制反转IOC和面向切面编程AOP。
控制反转IOC也叫依赖注入DI:在以前对象都是由程序员创建管理,现在由spring容器来管理所有对象,
(实际上spring容器也是一个对象),也就是以前由程序员控制管理对象,现在由对象自己控制管理对象。
依赖注入:例如:Student对象中有一个班级clazz属性,依赖注入也就是一个学生必然依赖一个班级
    把一个clazz属性装入到学生对象中,就叫注入。

spring核心容器有三种注入方式:
1)构造方法注入:
      
           
           
                       
    
2)set方法注入:(必会)
   
       
       
       
   

   property标签中的name属性值与set方法名匹配,与属性名无关
3)注解注入:(须会)
    public class Student(){
         private int id;
         private String name;
    
        @Override
        public String toString() {
             return "Student [id=" + id + ", name=" +  name + "]";
        }
    }
    public class Person(){
          private int id;
          private String name;
         @Autowired
         private Student student
    
         @Override
         public String toString() {
             return "Person [id=" + id + ", name=" +  name + ", student=" + student + "]";
         }
    }
spring.xml配置文件:
   
   
    
   
    
   
    @Autowired与@Resource的区别:
    1、@Autowired是spring框架提供的注解,@Resource是jdk提供的注解。
    2、@Autowired根据类型绑定
         @Resource先根据名字绑定,再根据类型绑定。

spring容器会自动完成依赖注入。
面向切面编程AOP:面向切面可以解决日志记录,性能统计,安全控制,事务管理等功能
    比如在一个程序中需要给很多方法增强功能,而且增强的功能是重复性的,这时AOP就起作用了,
    AOP可以写一遍代码,给所有方法增强需要的功能。其实AOP就是弥补OOP的不足。

spring中管理的对象叫bean。
spring核心容器中有三种创建bean的方式:
1)构造方法创建bean:(必会)
     1.无参构造方法创建bean  
     2.有参构造方法创建bean   
    
           
           
           
    
    index代表给构造方法的第几个参数赋值
    constructor-arg标签中还有几个属性:
         name:设置参数名  如:name="id"
         type:设置参数类型  如:type="java.lang.String"
         ref:引用另一个对象   如:ref="student2" (引用另一个对象,student2代表另一个对象的id值)
2)静态工厂创建bean  (静态工厂创建bean并不会创建工厂,只是利用工厂创建bean)
     
3)实例工厂创建bean   (实例工厂是先创建工厂bean,才能调用工厂的普通方法)
    
    

 

你可能感兴趣的:(关于Spring核心容器)