zoukankan      html  css  js  c++  java
  • spring 入门1 --- 使用spring创建第一个小的测试程序

    搞完了java来学习一下spring,spring是一个开源的设计层面的框架,它是一款轻量级的高内聚低耦合的基于ICO以及AOP的开源框架,spring是春天的意思,是由一个悉尼大学的音乐博士rod搞出来的,这个男人改变了java世界。

    Spring框架功能大约有20个模块这些模块按组可以分为核心容器,数据访问/集成,web,AOP(面向切面编程),设备、消息和测试。

     先来看一下Spring的四大块

    • IOC思想,这个是spring的设计思想,方便接偶,可以简化开发,Spring可以看作一个大的工厂,所有的对象创建跟关系维护,都交给他来管理,Spring容器里面承载的是对象,对象创建以及关系维护是基于反射
    • AOP编程 面向切面编程,面向切面编程跟面向对象编程是补足的关系,举个例子,可以把我们的系统架构看作是一个横向的链条,这样可进行权限拦截等功能
    • 声明式事务支持只需要通过配置就可以完成对事物的处理
    • 方便集成各种优秀的框架,spring可以无缝整合其他的框架,因此spring更像一个管家,他来负责管理各个框架

    首先使用idel创建一个maven项目

    然后修改pom.xml文件,导入我们需要的依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.yang</groupId>
        <artifactId>com.yang-20200112</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- 安装一下我们需要的依赖 -->
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.3.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.3.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>4.3.7.RELEASE</version>
            </dependency>
    
            <!-- 这个是日志模块, 不是spring的依赖-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
            </dependency>
            <!-- junit测试框架 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13-rc-2</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>

    然后去项目的源码文件中写代码

    package com.yang;
    
    public class Person {
        private int id;
        private String Name;
        private String sex;
    
        public Person() {
    
        }
    
        public Person(int id, String name, String sex) {
            this.id = id;
            Name = name;
            this.sex = sex;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public String getName() {
            return Name;
        }
    
        public void setName(String name) {
            Name = name;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String toString() {
            return String.format("Person id: %s, name:%s, sex: %s", this.id, this.Name, this.sex);
        }
    
    }

    之后在resources配置spring的配置文件,一般官网推荐名字时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">
    
        <!--id, name 必须是唯一的, id里面不可以有特殊字符,在创建时,spring可以通过id或者name找到这bean-->
        <bean id="personId" name="personName" class="com.yang.Person">
            <!--这个就是实例时的初始值-->
            <property name="id" value="1" />
            <property name="name" value="ning" />
            <property name="sex" value="female" />
        </bean>
    </beans>

    顺便配置一下log4j的配置文件

    # log4J日志框架的配置文件 文件名字不能改
    # DEBUG 表示日志的级别  调试
    # Console 日志打印在控制台
    log4j.rootLogger=INFO, Console 
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
    
    # 哪些日志需要打印
    log4j.logger.java.sql.ResultSet=INFO  
    log4j.logger.org.apache=INFO  
    log4j.logger.java.sql.Connection=DEBUG  
    log4j.logger.java.sql.Statement=DEBUG  
    log4j.logger.java.sql.PreparedStatement=DEBUG 

    最终我们来看一下测试代码

    package com.yang.test;
    
    import com.yang.Person;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class PersonTest {
        /**
         * 这个是传统方法进行的测试
         */
        @Test
        public void test1(){
            Person p1 = new Person(1, "ming", "female");
            System.out.println(p1);
        }
    
        /**
         * 这个是基于spring进行的测试,我们可以发现,对象不再由我们进行创建,而是交给spring,
         * 这样做的好处是,项目编译完成,我们还可以调整配置文件,改变输出的值,这样不就实现了解耦
         */
        @Test
        public void test2(){
            ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            Person person = (Person) ac.getBean("personId");
            System.out.println(person);
        }
    }

    通过上述代码,我们可以发现spring的IOC的设计思想,就是所有的对象创建之类的操作不需要我们管,spring会负责对象的生命周期以及对象间的关系,这个就是spring的核心思想。

  • 相关阅读:
    JavaSE 基础 第51节 定义自己的异常
    JavaSE 基础 第50节 Java中的异常链
    JavaSE 基础 第49节 手动抛出异常
    JavaSE 基础 第48节 Java中的异常声明
    JavaSE 基础 第47节 获取异常信息
    JavaSE 基础 第46节 异常的分类
    JavaSE 基础 第45节Java异常快速入门
    JavaSE 基础 第44节 引用外部类的对象
    JavaSE 基础 第43节 静态内部类
    通用爬虫
  • 原文地址:https://www.cnblogs.com/yangshixiong/p/12184422.html
Copyright © 2011-2022 走看看