Spring学习-01

发布时间 2023-04-13 16:37:13作者: hemk

1、Spring

1.1、简介

 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.16</version>
        </dependency>

1.2、优点

  • 开源的免费框架(容器)
  • 轻量级、非入侵式的框架
  • 特性:控制反转(IOC)、面向切面编程(AOP)
  • 支持事物的处理,对框架整合的支持

== Spring就是一个轻量级的控制反转和面向切面编程的框架

1.3、组成

1.4、扩展

  • SpringBoot:
    • 一个快速开发的脚手架
    • 基于SpringBoot可以快速开发单个微服务
    • 约定大于配置
  • SpringCloud:
    • 是基于SpringBoot实现的

弊端:配置十分繁琐

2、IOC(控制反转)

从用户掌握主动权到程序员掌握主动权,程序的调用。(最初的就是客户点单你要根据他的需求去买菜,可能你之前买的菜用不上了。后来就是用户根据你提供的菜单点餐,客户点的菜都是店里有的。)

  • 控制反转就是:获得的依赖对象反转了
  • 控制反转是一种通过描述(xml或注解)并通过第三方去生产或获取特定对象的方式。在spring中实现控制反转的是ioc容器,其实现的方法是依赖注入(DI)

控制:传统应用程序的对象是由程序本身控制创建的,使用Spring后是由Spring创建的。

反转:程序本身不创建对象,而变成被动的接收对象

依赖注入:利用set方法来进行注入

ioc就是一种编程思想,由主动的编程变成被动的接收

要实现不同的操作只需要在xml配置文件中进行修改。

对象由Spring来创建、管理、装配

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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--使用Spring来创建对象,在spring中这些都称为bean
         类型  变量名 = new 类型();
        Hello   hello = new Hello();

        bean=对象
        id=变量名
        class = new的对象
        property 相当于给对象中的属性设置一个值
    -->
<bean id="mysqlImpl" class="com.he.dao.UserDaoMysqlImpl"/>
<bean id="oracleImpl" class="com.he.dao.UserDaoOracleImpl"/>
<bean id="UserServiceImpl" class="he.yan.service.UserServiceImpl">
    <!--ref:使用spring容器中创建好的对象
        value:具体对象的值,基本数据类型
    -->
    <property name="userDao" ref="oracleImpl"/>
</bean>

</beans>

此时对象是oracleImpl输出的也是它的内容

实体类:
    
public class UserDaoOracleImpl implements UserDao{
    public void getUser() {
        System.out.println("oracle获取用户数据");
    }
}

测试文件:
    
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class mytest {
    public static void main(String[] args) {
        //用户实际调用的是业务层
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserServiceImpl userServiceImpl = (UserServiceImpl)context.getBean("UserServiceImpl");
        userServiceImpl.getUser();
    }
}

结果输出:   oracle获取用户数据