zoukankan      html  css  js  c++  java
  • Spring视频学习笔记(一)

    Spring视频学习笔记(一)

     Spring容器

    • 在SpringIOC容器中读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化后,才可以从IOC容器中获取Bean实例并使用

     Spring提供了两种类型的IOC容器实现

    • BeanFactory.IOC:BeanFactory是Spring框架的基础设施,面向Spring本身;

    • ApplicationContext提供了更多的高级特性,是BeanFactory的子接口;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext而非底层的BeanFactory

     ApplicationContext的主要实现类

    • ClassPathXmlApplicationContext:从类路径下加载配置文件

    • FileSystemXmlApplicationContext:从文件系统中加载配置文件

    ApplicationContext在初始化上下文时就实例化所有单例的Bean;ApplicationContext新增加两个方法refresh()和close(),让ApplicationContext具有启动,刷新和关闭上下文的能力

     Spring支持三种依赖注入的方式

    • 属性注入(即通过setter方法注入Bean的属性值或者依赖的对象,常用方法;helloword为例)
    <!-- 
    	配置bean 
    	class:bean的全类名,通过反射的方式在IOC容器中常见bean,所以要求bean中要有无参的构造器
    	id:标识容器中的bean,id唯一;id可以制定多个名字,名字之间可用逗号分号或者空格分离
    -->
    	<bean id="helloWorld" class="com.wy.spring.HelloWorld">
    	  <property name="name" value="Spring"></property>
    	</bean>
    • 构造器注入
    public class Car {
    	private String brand;
    	private String corp;
    	private int price;
    	private int maxSpeed;
    	public Car(String brand, String corp, int price) {
    		super();
    		this.brand = brand;
    		this.corp = corp;
    		this.price = price;
    	}
    	@Override
    	public String toString() {
    		return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price
    				+ ", maxSpeed=" + maxSpeed + "]";
    	}
    }

    配置文件

    <!-- 通过构造法方法来配置bean属性,可以指定参数的位置和参数的类型(type="java.lang.String")以 区分重载的构造器-->
    	<bean id="car" class="com.wy.spring.Car">
    	  <constructor-arg value="Xuefulan" index="0"></constructor-arg>
    	  <constructor-arg value="beijing" index="1"></constructor-arg>
    	  <constructor-arg value="200000" index="2"></constructor-arg>
    	</bean>
    	  
    	  <!-- 属性值也可以使用属性子节点直接进行配置 -->
    	  <constructor-arg type="java,lang.Stirng">
    	    <value>250</value>
    	  </constructor-arg>
      </bean>

    当有引用时的配置,以Car和person类为例

    public class Person {
    	private String name;
    	private int age;
    	private Car car;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public Car getCar() {
    		return car;
    	}
    	public void setCar(Car car) {
    		this.car = car;
    	}
    	@Override
    	public String toString() {
    		return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";
    	}
    }

    有引用时的配置

    <bean id="person" class="com.wy.spring.Person">
    	  <property name="name" value="jay"></property>
    	  <property name="age" value="25"></property>
    	  <property name="car" ref="car" ></property>
    	</bean>
    • 工厂方法注入
  • 相关阅读:
    模-数(A/D)转换器
    数-模(D/A)转换器
    VIM 常用命令
    Linux常用命令
    一个开关电源传导、辐射处理案例-----Layout环路
    解决:PADS导入.DXF结构图出现坐标超出范围问题
    Python3-threading模块-多线程
    Python3-socketserver模块-网络服务器框架
    Python3-socket模块-低级网络接口
    Python3-面向对象
  • 原文地址:https://www.cnblogs.com/sinon/p/5845874.html
Copyright © 2011-2022 走看看