Spring的环境搭建与注入

Spring 的主要功能:IOC、AOP、Spring 关于jdbc的支持、与Junit的整合测试。
Spring的刚开始学习时的小知识点:

**环境搭建**
  1. 导入包 4个核心包+2个日志包
    这里写图片描述
  2. 写xml配置文件
    默认spring配置文件可以任意起名,但建议写成applicationContext.xml
    默认路径可以是src下的任意路径,但是建议写在src下
  3. xml文件的约束导入
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "></beans>```
 <h4>**核心概念**</h4>
 IOC: Inverse of Control  控制反转
    之前对象由我们开发人员创建,对象关系由我们维护,现在交由spring容器创建和维护类之间的关系。控制权反转了,这就是IOC。
    DI:依赖注入
       注入的方式:set方法注入,构造方法,字段注入
    注入类型: 
        基本类型:8大基本数据类型
        引用数据类型:对象(包括String)
    实现IOC思想的很重要的技术支持。
AOP:面向切面编程
BeanFactory:
    Spring原始接口,该接口实现类的一个特点是每次获取bean时,才会创建对象。
所以占用内存较小,但是速度不快。
ApplicationContext:
    每次容器一起动就会创建对象,还有很多其他功能。占用内存较大,但是速度快。
两个实现:
    ClassPathXmlApplicationContext 从类路径中加载配置文件
    FileSystemXmlApplicationContext 从绝对路径中加载配置文件
ClassPathXmlApplicationContext 常用,但是将来不测试代码的时候,我们其实可以交给web.xml。
 <h4>**Spring配置,包括属性注入(赋值)**</h4>
1、bean标签
      Class: 被管理对象的完整路径
      Name:给被管理的对象起个名字,便于获取对象的时候使用。
       Id:与name属性一样,但是名字不能重复。建议使用name。
      Scope:singleton(默认值) 单例对象
         在spring中只创建一个实例化对象
      Prototype: 多例原型
         在spring中创建多个对象,一般我们不会指定为多例对象,但是如果将来整合structs2整合的时候,需要指定为多例,多例时,web容器启动时,不会创建该对象,每次使用时创建一次,即使用一次创建有一次。
      Init-method:
         创建一个方法作为生命周期的初始化方法,spring会在创建对象的时候调用该方法。
      Destory-method:
         创建一个方法作为生命周期的销毁方法,spring会在销毁对象的时候调用该方法。

2、**spring容器创建对象及注入**
      >首先创建实例对象,get和set方法就省略了:
      public class Admin {
		private String name;
		private String password;
		private Car car;
}
public class beanFactory {
			public static	Admin getStaticAdmin(){
					Admin admin = new Admin();
					return admin;
				}
				public Admin getAdmin(){
					Admin admin = new Admin();
					return admin;
				}
}
public class Car {
	private String color;
	private String name;
	}
public class CollectionDemo {
	private List list;
	private Map map;
	private Properties properties;
	private Object[] arr;
}

 1. 空构造方法创建对象
 >```<bean name="admin" class="com.hui.pojo.Admin" scope="singleton" init-method="initMethod" destroy-method="destroyMethod">
		<!-- 普通成员变量的赋值注入 -->
		<property name="name" value="admin"></property>
		<property name="password" value="123123"></property>
		<!-- 对象类型的成员变量注入 -->
		<property name="car" ref="car"></property>
	</bean>```
	
 2. 有参构造方法创建对象
>```<bean name="admin1" class="com.hui.pojo.Admin" >
        <!-- 有参构造方法 -->
        <constructor-arg name="name" value="xiaoming"></constructor-arg>
        <constructor-arg name="password" value="123"></constructor-arg>
        <constructor-arg name="car" ref="car"></constructor-arg>
    </bean>```
    
 3. 静态工厂创建
 >```<bean name="admin2" class="com.hui.pojo.beanFactory"
		factory-method="getStaticAdmin">
		<property name="name" value="admin"></property>
		<property name="password" value="jnmd1703"></property>
		<property name="car" ref="car"></property>
	</bean>```
	
 4. 实例工厂创建
 >```<bean name="adminFactory" class="com.hui.pojo.beanFactory"></bean>
	<bean name="admin3" factory-bean="adminFactory" factory-method="getAdmin">
		<property name="name" value="admin"></property>
		<property name="password" value="jnmd1703"></property>
		<property name="car" ref="car"></property>
	</bean>```
>car对象
	```<bean name="car" class="com.hui.pojo.Car">
		<property name="color" value="骚气红"></property>
		<property name="name" value="自行车"></property>
	</bean>```
 5. 可以导入其他配置文件
```<import resource="applicationContext2.xml" />```
 6. 复杂类型的注入
```<bean name="collection" class="com.hui.pojo.CollectionDemo">```

        <!-- 数组的注入 -->
         <property name="arr">
            <array>
                <value>haha</value>
                <value>xixi</value>
                <value>baga</value>
            </array>
        </property>
        
        <!-- Map的注入 -->
        <property name="map">
            <map>
                <entry key="url" value="localhost:8080"></entry>
                <entry key="username" value="admin"></entry>
            </map>
        </property>
        
        <!-- List注入 -->
        <property name="list">
            <list>
                <value>html</value>
                <value>javascript</value>
                <value>css</value>
            </list>
        </property>
        <!-- properties注入 -->
        <property name="properties">
            <props>
                <prop key="username">zhangsan</prop>
                <prop key="password">j1n7m0d3</prop>
            </props>
        </property>
    </bean>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值