Spring框架的入门1

  1. 什么是Spring框架?

    它是一个容器,是一个整合其他框架的框架,它的核心是IOC和APO,它由20多个模块组成,在很多领域都提供优秀的解决方案

    我们学习Spring SpringMVC SpringBoot SpringCloud

  2. Spring的特点

    • 轻量级

      由20多个模块组成,每一个jar包都很小,小于1M,核心包3M

      对代码无污染,

    • 面向接口编程

      使用接口就是面向灵活,项目的可扩展性,可维护性都极高,接口不关心实现的类型,使用时接口只想实现类,切换实现类即可切换整个功能。

    • apo:面向切面编程

      就是将公共的,通用的,重复的代码单独开发,在需要的时候反织回去,底层原理是动态代理

    • 整合其他框架

      他整合之后是其他框架更加易用。

  3. 什么是IOC

    控制反转IOC(inversion of contral)是一个概念,是一种思想。由Spring容器进行对象的创建和依赖注入,程序员在使用时直接取出使用。

    正转:由程序员进行对象的创建和依赖注入称之为正转,程序员说了算

    反转:由Spring容器创建对象和依赖注入称之为反转,将控制权从程序员手中夺走,由给Spring容器,称为反转

  4. Spring项目的创建

    • 1.创建Maven项目,选择jdk1.8及以上的版本

    • 2.创建好之后点击pom.xml文件导入maven依赖(版本根据自己的需求选择)

    • <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.18</version>
      </dependency>

    • 3.重点:在项目的resources的资源文件夹下创建Spring的配置文件,官方命名为applicationContext.xml

    • 创建方式:

       

    然后在文件中加入Spring模板就可以啦

    <?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>
    • 基于xml的IOC

      1. 创建对象

        <!--创建学生类对象
             等同于 Student student = new Student();
             id:就是创建的对象的名称
             class:就是创建的对象的类型,底层通过反射构建对象
        ​
             启动容器的同时创建对象
        -->
        <bean id="stu" class="com.bjpowernode.pojo.Student"></bean>
      2. 给创建的对象赋值

        • 使用Setter注入

          简单类型注入和引用类型注入

          简单类型注入值使用value属性

          <property name="name" value="张三"></property>
          <!--xml文件的语法,所以age需要带引号-->
          <property name="age" value="57"></property>

          引用类型注入值使用ref属性

          <bean id="stu" class="com.bjpowernode.pojo2.Student">
              <property name="name" value="李四"></property>
              <property name="age" value="23"></property>
              <property name="school" ref="school"></property>
          </bean>

          必须要注意:使用setter注入必须要提供无参的构造方法,必须提供setXXX方法。

        • 使用构造方法注入

        项目案例:

        使用三层架构进行用户的插入操作

        界面层,业务逻辑层,数据访问层(模拟)

        Spring会接管三层架构中哪些对象的创建?

        非Spring接管下的三层项目构建:

        • 实体类

          com.bjpowernode.dao users

        • 数据访问层

          com.bjpowernode.dao UserMapper.java(接口)

        UserMapperImpl.java(实现类)

        • 业务逻辑层

          com.bjpowernode.service UserService.java(接口)

        UserServiceImpl.java(实现类)

        • 页面层

          com.bjpowernode.contriller UserController.java

        不使用spring时三层架构的创建

        • 实体类的创建

          package com.bjpowernode.pojo;
          //实体类
          public class Users {
              private int uid;
              private String uname;
              private int uage;
          ​
              public Users(int uid, String uname, int uage) {
                  this.uid = uid;
                  this.uname = uname;
                  this.uage = uage;
              }
          ​
              public Users() {
              }
          ​
              public int getUid() {
                  return uid;
              }
          ​
              public void setUid(int uid) {
                  this.uid = uid;
              }
          ​
              public String getUname() {
                  return uname;
              }
          ​
              public void setUname(String uname) {
                  this.uname = uname;
              }
          ​
              public int getUage() {
                  return uage;
              }
          ​
              public void setUage(int uage) {
                  this.uage = uage;
              }
          ​
              @Override
              public String toString() {
                  return "Users{" +
                          "uid=" + uid +
                          ", uname='" + uname + '\'' +
                          ", uage=" + uage +
                          '}';
              }
          }

        • 数据访问层

          //数据访问层
          public interface UserMapper {
              //增加用户
              int insert(Users u);
          }
          ​
          /**
           * 数据访问层实现类*/
          public class UserMapperImpl  implements UserMapper{
              @Override
              public int insert(Users u) {
                  System.out.println(u.getUname()+"用户增加成功");
                  return 1;
              }
          }

        • 业务逻辑层

          /**
           * 业务逻辑层*/
          public interface UserService {
              //增加用户
              int insert(Users users);
          }
          ​
          /**
           * 业务逻辑层的实现类*/
          public class UserServiceImpl implements UserService {
          ​
             //所有的业务逻辑层中 必定有数据访问层的对象
              private UserMapper userMapper=new UserMapperImpl();
          ​
              @Override
              public int insert(Users users) {
                  //可以添加更加复杂的业务b
                  return userMapper.insert(users);
              }
          }

        • 界面层

          //界面层
          public class UserController {
          ​
              //如何访问业务逻辑层对象
              //所有的界面层都会有业务逻辑层的对象
              public UserService userService =new UserServiceImpl();
          ​
              //界面层的功能实现就是对外提供访问的功能
              public int insert(Users users){
                  return userService.insert(users);
              }
          }

        • 创建测试类进行测试

          public class Test01 {
              @Test
              public  void testInsertUsers(){
                  //创建userController对象
                  UserController userController =new UserController();
                  int num = userController.insert(new Users(100, "张三", 33));
                  System.out.println(num);
              }
          }

        • 运行结果如下

           

           

    使用spring框架时三层架构的创建:

    • 1:导入Spring依赖项

    • 2:添加配置文件applicationController.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">
      ​
          <!--创建各种配置文件-->
          <!--创建数据访问层对象-->
          <bean id="uMapper" class="com.bjpowernode.dao.UserMapperImpl"></bean>
      ​
          <!--创建业务逻辑层对象-->
          <bean id="uService" class="com.bjpowernode.service.impl.UserServiceImpl">
              <property name="userMapper" ref="uMapper"></property>
          </bean>
      ​
          <!--创建界面层对象-->
          <bean id="uController" class="com.bjpowernode.controller.UserController">
              <property name="userService" ref="uService"></property>
          </bean>
      </beans>

    • 注意:使用spring时需要修改业务逻辑层实现类和界面层的内容(因为对象改由spring创建)

    • /**
       * 业务逻辑层的实现类*/
      public class UserServiceImpl implements UserService {
      ​
         //所有的业务逻辑层中 必定有数据访问层的对象
          private UserMapper userMapper;// =new UserMapperImpl();
      ​
          //交给Spring去注入值时,必须提供setter方法
          public void setUserMapper(UserMapper userMapper) {
              this.userMapper = userMapper;
          }
      ​
          @Override
          public int insert(Users users) {
              //可以添加更加复杂的业务b
              return userMapper.insert(users);
          }
      }

    • //界面层
      public class UserController {
      ​
          //如何访问业务逻辑层对象
          //所有的界面层都会有业务逻辑层的对象
          public UserService userService ;//=new UserServiceImpl();
      ​
          //交给Spring去注入值时,必须提供setter方法
          public void setUserService(UserService userService) {
              this.userService = userService;
          }
      ​
          //界面层的功能实现就是对外提供访问的功能
          public int insert(Users users){
              return userService.insert(users);
          }
      }

    • 最后创建测试类进行测试

      public class Test01 {
          @Test
          public  void testInsertUsers(){
      ​
              //1.创建容器并启动
              ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
              //取出对象
              UserController uController = (UserController) ac.getBean("uController");
              //测试功能
              int insert = uController.insert(new Users(123, "李四", 34));
              System.out.println(insert);
          }
      }

      输出结果为

       

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值