Spring配置搭建——Spring学习 day1

对象准备

1.导包

Spring core ,context ,beans ,expression ,aop

Apache commons logging

2.写入一个对象

这边写入User对象

3.书写配置注册对象到容器

位置任意,建议在src下,配置文件名任意,建议叫applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!-- 将User对象交给spring容器管理 -->
<bean name="user" class="com.littlepage.entity.User">
</bean>
</beans>

4.代码测试

//1.创建容器对象
 ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
//2.向容器"要"User对象
User user = (User)ac.getBean("user");        
//3.打印User对象 System.out.println(user);

上述是空参构造方式,还有静态工厂方式,实例工厂等...(仅仅需要了解)

IOC&DI:

Inverse Of Control 控制反转

将我们创建对象的方式反转了

以前对象创建是由开发人员自己维护,包括依赖关系也是自己注入

使用了Spring后,创建对象的方式反转了,对象的创建以及依赖关系可以由Spring创建及注入

从自己创建,变成了转给了程序Spring

Dependency Injection 依赖注入

实现IOC思想需要DI支持

注入方式:

  set方法注入,构造方法注入,属性直接字段注入

注入类型:

  值类型注入(基本类型),引用类型注入(引用类型)

配置文件详解Bean

Bean元素:使用元素描述需要spring容器管理的对象
name属性:给管理的对象起名,获得对象根据该名称获得对象
id属性:与name属性一模一样(名称不可重复,不能使用特殊字符)
结论:建议使用name属性
scope属性:

  singleton:(默认)单例对象

验证:<bean name="user" class="com.littlepage.entity.User"></bean>

public static void main(String[] args) {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = (User)ac.getBean("user");
        User user2= (User)ac.getBean("user");
        System.out.println(user==user2);
}

  打印是true

  prototype:多例,每次创建都是新的对象

验证<bean name="user" class="com.littlepage.entity.User" scope="prototype"></bean>

  运行同样是false

  request:web环境下,对象与request周期一致

  session:与session周期一致

  黄色部分的属性用不到

  

生命周期属性:

init-method="init" destory-method="destory"

需要在实体类添加init和destory的空返回方法

Spring的分模块配置:

<import resource="***.xml">导入其他配置文件,分配置文件

属性注入:

set方法注入(只需要这个):

<bean name="user" class="com.littlepage.entity.User">
    <property name="name" value="tom"></property>//值类型
    <property name="age" value="10"></property>
    <property name="car" ref="car"></property>//引用类型
</bean>
<bean name="car" class="com.littlepage.entity.Car">
    <property name="name" value="lamborghini"></property>
    <property name="color" value="red"></property>
</bean>
</beans>

构造函数注入、p名称空间注入、spel注入

(非常用的方法)

猜你喜欢

转载自www.cnblogs.com/littlepage/p/10858491.html
今日推荐