第一章《Spring入门学习IOC、DI》

Spring
在这里插入图片描述

1.Spring框架简介
Spring 是轻量级的容器框架。
主要开发者:Rod Johnson ,他是轮子理论的推崇者。
轮子理论:不重复发明轮子。
IT: 直接使用写好的代码
Spring框架宗旨:不开发新的技术,可以让你原有的技术使用起来更方便。
SsM spring+spring mvc +mybatis SpringBoot SpringCloud
2.Spring框架核心功能

  1. IOC/DI 控制反转和依赖注入
  2. AOP 面向切面编程
  3. 声明式事务
    3.Spring 框架的运行环境

解释:
1.Test: 单元测试功能
2.Core Container: 核心容器 (Spring启动的基本条件)
Beans: 负责创建类对象并管理对象。
Core: 核心类
Context: 获取外部资源以及管理注解。
SpEL: b表达式语言
3.AOP Aspects : AOP相关的依赖包
4.Data Access :Spring对数据访问层的封装
Jdbc: Spring对jdbc代码封装
ORM: Spring 对持久层框架的封装。如:hibernate框架
Transactions: 声明式事务
5. Web : spring对javaee web的支持
如:tomcate启动加载配置文件,需要引入spring-web.jar.
Springmvc框架,引入spring-webmvc.jar
4.Spring框架重要概念
1、spring是一个大容器
2、ApplicationContext 接口。将Spring管理所有的内容放入到ApplicationContext容器中。
3、Spring3 以后将spring功能拆成多个jar包。
以前的版本只有一个jar包。
5.IOC

  1. IOC 控制反转 inversion of control
  2. IOC原先由程序员主动通过new关键字创建对象事情,转交给Spring负责。
    控制反转中控制:控制类的对象
    控制反转中反转:转交给Spring负责
  3. 作用: 解耦合
    程序员不需要管理对象。解除程序员和对象管理之间的耦合。
    6.Spring框架环境搭建
    6.1:创建一个java|web项目
    6.2:引入spring相关的jar包

注意:需要引入日志记录jar包,以及日志配置文件
6.3:创建spring配置文件
src–>xml–>applicationContext.xml (名字和路径可以自定义)
注意:采用Schmea约束。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans> 

6.4:编写一个实体类
public class Student {
private int sno;
private String sname;
private int age;
}
6.5:配置文件中配置标签
注意:当加载配置文件时,马上创建所有的对象,并存储到ApplicationContext容器中。
<!–
spring创建对象 配置bean标签
class:指定需要创建对象的类的权限定名
id: 指定对象的标识(唯一)
–>

6.6:测试类。 加载配置文件获取ApplicationContext对象,获取想要的对象。
//1.加载配置文件,获取ApplicationContext容器对象
ApplicationContext ac=new ClassPathXmlApplicationContext(“applicationContext.xml”);
//2.获取对象 id标识
Student stu=ac.getBean(“stu”,Student.class);
System.out.println(stu);
6.7:注意总结

  1. 默认情况下,调用无参构造创建对象。
  2. 默认情况下,配置文件加载时,就马上创建所有的对象。
    设置延迟创建,获取对象时才创建。设置属性
    方式一:在标签中加上default-lazy-init="true"属性。(对所有的bean有效)
    方式二:在标签中加上lazy-init="true"属性。(只对当前bean有效)
    3.默认情况下,对象创建使用单例模式。(不管获取多少次,都是同一个)
    设置scope属性:
    singleton:单例模式。默认值(bean标签只会创建一次)
    prototype:多例模式。每获取一次,创建一个对象。

7.创建对象的三种方式
7.1:调用构造方法创建
7.1.1.调用无参构造方法(默认)

<bean id="stu" class="pojo.Student"></bean>
  7.1.2.调用有参构造方法
      需要在<bean>标签中加<constructor-arg>子标签
     1.提供有参构造方法
     2.配置有参构造方法的子标签
     注意:如果匹配多个构造方法,执行最后一个。
     属性: index :下标  name:参数名称  type:类型
               value: 给基本类型和String赋值
               ref: 属性值引用另一个对象
<bean id="stu2" class="pojo.Student">
   <!-- 
   <constructor-arg index="0" value="1007"></constructor-arg>
   <constructor-arg index="1" value="小黑"></constructor-arg>
   <constructor-arg index="2" value="38"></constructor-arg> 
   -->
   <!-- <constructor-arg name="sno" index="0" value="1007"></constructor-arg>
   <constructor-arg name="sname" index="1" value="小黑"></constructor-arg>
   <constructor-arg name="age" index="2" value="38"></constructor-arg> -->
   <constructor-arg type="int"  value="1007"></constructor-arg>
   <constructor-arg type="java.lang.String"  value="小黑"></constructor-arg>
   <constructor-arg type="int"  value="38"></constructor-arg>
</bean>

7.2:实例工厂创建对象
工厂设计模式:帮助创建类对象(频繁创建对象)
实例工厂: 先工厂对象,才能生产对象。
实现步骤:
1.编写一个工厂类,提供生产对象的方法
public class PersonFactory {
/**
* 创建人类对象的方法
*/
public Person createPerson() {
return new Person();
}
}

 2.配置文件中配置工厂对象
<!--创建实例工厂对象-->
<bean id="factory" class="util.PersonFactory"></bean>
<!-- 创建人类的对象 -->
<bean id="p1" factory-bean="factory" factory-method="createPerson"></bean>

7.3:静态工厂创建对象
静态工厂: 不需要创建工厂对象,直接生产对象。
实现步骤:
1.编写一个工厂类,提供生产对象的方法
public class PersonFactory {
/**
* 创建人类对象的方法
*/
public static Person createPerson() {
return new Person();
}
}

 2.配置文件
<!-- 创建人类的对象 -->
<bean id="p2" class= factory-method="createPerson"></bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值