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的核心思想。

  • 相关阅读:
    Springboot 中AOP的使用
    ElasticSearch 聚合查询百分比
    ElasticSearch 入门
    elasticsearch 关联查询
    spring data elasticsearch多索引查询
    elasticsearch 拼音+ik分词,spring data elasticsearch 拼音分词
    es同步mysql同步-logstash
    jpa Specification复杂查询
    java Spring boot使用spring反射
    BeautifulSoup学习记录
  • 原文地址:https://www.cnblogs.com/yangshixiong/p/12184422.html
Copyright © 2011-2022 走看看