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

posted @ 2020-01-12 19:33  灬灬灬灬灬灬  阅读(332)  评论(0编辑  收藏  举报