spring基础IOC小案例01

  • 什么是spring?

spring是一个开源的面向切面(AOP)和控制反转(IOC)的容器框架,用来简化企业级的开发。帮助开发者解决开发中基础性的问题,专注于应用程序的开发。

为什么使用Spring?

降低组件之间的耦合度,实现软件各层之间的解耦合。

Controller层->Service层->Dao层

让代码结构更良好

高低原则:高内聚,低耦合

开闭原则:对扩张开放,对修改关闭

提供了许多技术框架

提供了各种服务:事务管理服务,消息服务

提供了单例模式

提供了Aop技术

对主流框架提供了集成支持

继承Mybatis,Hibernate,Struts等

Spring体系结构

IOC AOP Data Acess Web

IOC (Inversion of controller)控制反转

public class UserDaoServiceImpl{
    //userDao由service创建维护
    
private userDao userDao = new UserDao();

public void reist(User user){

userDao.save(user);

   }

}

控制反转就是指本身不负责对象的创建和维护,依赖对象的创建和维护交给外部容器来负责,这种控制权发生了转移,就是控制反转

IOC:把对象的创建,初始化,销毁交给spring来管理,而不是由开发者控制,实现控制反转。

spring框架IOC容器的基础由org.springframework.beans包和org.springframework.context包构成,BeanFactory接口是SpringIOCF容器的核心接口,

外部容器/IOC容器 ,存储对象(bean)的容器

DI(dependency injection)依赖注入

public class UserDaoServiceImpl{

//userDao由外部容器创建和维护    
private userDao userDao;
//让容器创建好的对象注入到service中
public void setUserDao(User user){
    this.userDao = userDao;
}

public void reist(User user){

userDao.save(user);

   }

}

依赖注入就是在运行期间,由外部容器动态的将依赖对象注入到组件中。

依赖注入是控制反转的基础。

java中依赖注入三种实现方式:构造器注入,setter方法注入,接口注入

在spring框架中解释IOC?

Spring中的org.springframework.beans包和org.springframework.context包构成了spring框架IOC容器的基础。

BeanFactory接口提供了一个先进的配置机制,是得任何类型的对象的配置成为可能,ApplicationContext接口对BeanFactory进行了扩展,在BeanFactory的基础上添加了其他功能,比如与spring的AOP的集成,也提供了message resource的机制,事件传播以及应用层的特别配置,比如针对Web应用的WebApplicationContext,

springIOC第一个案例

先添加jar包

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!--spring-core-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <!--spring-bean-->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <!--spring-context-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <!--spring-expression-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
        </dependency>
    </dependencies>

第二步创建配置文件applicationContext.xml

<?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>

第三步书写一个类HelloSpring

package com.ioc01;

/**
 * package_name:com.ioc01
 * Author:徐亚远
 * Date:2020/1/19 10:48
 * 项目名:springDemo01
 * Desription:
 **/
public class HelloSpring {
    private String name;
    private String age;

    //为bean中的属性注入值 本质上是通过setter方法注入的
    public void setAge(String age) {
        this.age = age;
    }

    //为bean中的属性注入值 本质上是通过setter方法注入的
    public void setName(String name) {

        this.name = name;
    }

    public void show() {
        System.out.println("姓名:" + name + "  ;  " + "年龄:" + age);
    }
}

第四步 配置applicationContext.xmll文件

<?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">
    <!--定义一个对象(bean)-->
   <bean id="HelloSpring" class="com.ioc01.HelloSpring">
       <!--为bean中的属性注入值 本质上是通过setter方法注入的-->
       <property name="name" value="徐亚远"/>
       <property name="age" value="23"/>
    </bean>
</beans>

第五步书写测试方法HelloSpringTest01

package com.ioc01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * package_name:com.ioc01
 * Author:徐亚远
 * Date:2020/1/19 10:50
 * 项目名:springDemo01
 * Desription:
 **/
public class HelloSpringTest01 {
    public static void main(String args []){
       /* 未使用springIOC的时候需要我们自己手动的去创建对象,然后调用对象的方法
        HelloSpring helloSpring = new HelloSpring();
        helloSpring.show();*/
        //先获取获取IOC容器,读取配置文件,初始化spring上下文
        ApplicationContext ac =  new ClassPathXmlApplicationContext("ioc01/applicationContext.xml");
      //根据id获取容器中的bena
        HelloSpring helloSpring = (HelloSpring) ac.getBean("HelloSpring");
        helloSpring.show();
    }
}

运行结果如图:
在这里插入图片描述
目录结构如图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值