zoukankan      html  css  js  c++  java
  • Spring框架入门

    1.1专业术语了解

    组件/框架设计

    侵入式设计

                       引入了框架,对现有的类的结构有影响;即需要实现或继承某些特定类。

                       例如:     Struts框架  继承ActionSupport

    非侵入式设计

             引入了框架,对现有的类结构没有影响。

             例如:Hibernate框架 / Spring框架

    控制反转:

             控制反转 ,IOCInversion on Control 

                 对象的创建交给外部容器完成,这个就做控制反转.

        原本在业务逻辑层里面,需要得到DAO的实现,要么在业务逻辑层直接new,要么使用工厂获取一个。这种叫做【主动获取依赖】。

        在IoC的时候,由容器决定给业务逻辑层注入哪个实例,不再需要自己手动new或者调用工厂get。

             依赖注入,  dependency injection

                       处理对象的依赖关系

          比如现在我们的业务逻辑层实现好了,需要用到数据库,一定有DAO接口。

          这个接口,在不同的持久化实现的时候,接口的实现都不一样!

          容器里面,能够找到合适实现,注入给业务逻辑层,避免自己在业务逻辑层里面去new!可以在任何的时候更换实现,目的是为【去耦合】。

             区别:

           控制反转:解决对象创建的问题 【对象创建交给别人】

                依赖注入:在创建完对象后, 对象的关系的处理就是依赖注入 【通过set方法依赖注入】

    AOP

             面向切面编程。切面,简单来说来可以理解为一个类,由很多重复代码形成的类。

             切面举例:事务、日志、权限;

    2.2 Spring框架 

    a. 概述

    Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架。

                                且可以和其他框架一起使用;Spring与Struts,  Spring与hibernate

                                (起到整合(粘合)作用的一个框架)

    Spring提供了一站式解决方案:

             1) Spring Core  spring的核心功能: IOC容器, 解决对象创建及依赖关系

             2) Spring Web  Spring对web模块的支持。

                                                            --> 可以与struts整合,让struts的action创建交给spring

                                                          -->spring mvc模式

             3) Spring DAO  Spring 对jdbc操作的支持  【JdbcTemplate模板工具类】

             4) Spring ORM  spring对orm的支持:

                                                            --> 既可以与hibernate整合,【session】

                                                            --> 也可以使用spring对hibernate操作的封装

             5)Spring AOP  切面编程

             6)SpringEE   spring 对javaEE其他模块的支持

    3.3 Spring开发步骤

      3.1、导包   

        使用下载安装方式得到的Spring,最少需要的依赖包

            spring-context-4.3.6.RELEASE.jar

                          --->Spring里面的核心jar文件之一,负责读取、解析XML配置文件

            spring-aop-4.3.6.RELEASE.jar

                          --->面向切面编程的支持,也是核心jar文件之一

            spring-beans-4.3.6.RELEASE.jar

                      --->负责beans元素的处理,整个xml配置的规范都在这里定义的

            spring-core-4.3.6.RELEASE.jar

                      --->最核心的容器,负责管理一个个的bean(实例)

            spring-expression-4.3.6.RELEASE.jar

                      --->Sp EL的支持包,在Spring里面能够直接使用表达式简化XML的配置

    -------------以下包可选---------------------

            commons-logging-1.2.jar

                      --->Spring里面需要使用的日志记录依赖包,默认情况下,直接使用System.err输出日志,默认级别是info

            log4j-jcl-2.7.jar

                      --->把commons-logging的输出,桥接到log4j 2输出,所有的日志级别、输出目标全部受到log4j 2控制。

            log4j-api-2.7.jar

                      --->log4j 2的api,一堆接口

            log4j-core-2.7.jar

                      --->log4j 2的实现

      3.2、核心配置文件applicationContext.xml 

                 Spring配置文件:applicationContext.xml / bean.xml

       约束参考:spring-framework-4.3.6.RELEASEdocsspring-framework-referencehtml

    <?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">
    
        <!-- IOC容器的配置: 要创建的所有的对象都配置在这里-->     <bean id="u1" class="org.fkjava.spring.domain.User"></bean> </beans>

      3.3、spring的Api

    创建一个实体类User 

    package org.fkjava.spring.domain;
    
    public class User {
        private String userName;
        //无参构造器
        public User() {
            System.out.println("User的无参构造器被调用");
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            System.out.println("注入的值:" + userName);
            this.userName = userName;
        }

    依赖注入的简单测试

    package org.fkjava.test;
    
    import org.fkjava.spring.dao.UserDao;
    import org.fkjava.spring.domain.User;
    import org.fkjava.spring.service.UserService;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class 依赖注入的简单测试 {
        public static void main(String[] args) {
    // 得到IOC容器对象,读取【applicationContext.xml】文件。直接得到IOC容器对象 

         ClassPathXmlApplicationContext cpc = new ClassPathXmlApplicationContext("applicationContext.xml");
        //User u = new User(); //之前获取对象需要创建一个对象,现用spring的Ioc容器后,先得到IOC容器,然后从容器中获取bean
         

        //从IOC容器中获取bean,从而得到对象
        User user = (User) cpc.getBean("u1");
         System.out.println(user); 
      }
    }

    输出:

      User的无参构造器被调用

      org.fkjava.spring.domain.User@1680b5a



  • 相关阅读:
    pytest+allure详情版
    【Django】django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required
    Docker-Portainer
    滑动解锁和截图
    调用JavaScript(浏览器滚动条)
    WebDriver操作cookie
    下载文件
    多表单切换
    利用parameterized模块进行unittest参数化
    关于软件测试必备的技能
  • 原文地址:https://www.cnblogs.com/guzhou-ing/p/6442179.html
Copyright © 2011-2022 走看看