美文网首页
Spring初步学习(一)

Spring初步学习(一)

作者: 大炮对着虫子 | 来源:发表于2017-10-11 14:30 被阅读13次

spring的特点为:轻量级无侵入式设计
功能模块:
test:提供单元测试的支持
core container:IOC,DI
aop:面向切面编码,
data access:操作数据库,事务控制
web:集成SpringMVC struts2

第一个简单的小例子
1、导jar(test core container)

我们可以通过Maven去加载对应需要的jar包
pom.xml

<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.xinge</groupId>
  <artifactId>spring-01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  
  <!-- 配置中央仓库 -->
  <repositories>
    <repository>
        <id>mvnrepository</id>
        <url>http://mvnrepository.com/</url>
    </repository>
  </repositories>
  
  <!-- 配置属性值 -->
  <properties>
    <jdk.version>1.7</jdk.version>
    <charset>utf-8</charset>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.1.0.RELEASE</spring.version> 
  </properties>
  
  <!-- 配置依赖信息 -->
  <dependencies>
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    
    <!-- mysql数据库驱动jar -->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>
    
    <!-- 配置spring的jar的依赖信息 -->
    <!-- spring测试模块的jar -->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
        <!-- <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
        </exclusions> -->
    </dependency>
    
    <!-- spring的核心容器模块的jar;beans  core  context  expressionlanguage -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    
    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        
  </dependencies>
  
  <!-- 配置插件信息 -->
  <build>
    <plugins>
        <!-- 工程编译插件 ;指定使用的jdk的版本-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
                <encoding>${charset}</encoding>
            </configuration>
        </plugin>
    </plugins>
  </build>
</project>
2、创建一个普通的java类

即写一个bean对象

public class Dog {
    private String dogName;

    public String getDogName() {
        return dogName;
    }

    public void setDogName(String dogName) {
        this.dogName = dogName;
    }
    
    public void shout(){
        System.out.println("汪汪!");
    }
    
    public Dog(){
        System.out.println("dog对象初始化成功!");
    }
}
public class Boy {
 private Dog dog;

public Dog getDog() {
    return dog;
}

public void setDog(Dog dog) {
    this.dog = dog;
}

@Override
public String toString() {
    return "Boy [dog=" + dog + "]";
}
 
}
3、在spring配置文件中注册java类
<?xml version="1.0" encoding="UTF-8"?>
<!-- 命名空间、指定标签满足w3c的规范、指定约束文件的路径(命名空间+约束文件的路径) -->
<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">

    <!-- 将java类注册到spring容器中,由spring容器管理该对象 -->
    <!-- class指定java类的全路径;id给该对象命名,唯一标识符  -->
    <bean id="dog" class="com.icss.model.Dog">
        <property name="dogName" value="小汪"></property>
    </bean>
    <bean id="boy" class="com.icss.model.Boy">
     <property name="dog" ref="dog"></property>
    </bean>

</beans>
4、写测试类,测试spring容器管理的对象是否实例化成功
public class DogTest {
    @Test
    public void testD(){
//      获取spring容器对象
        ApplicationContext ac = 
                new ClassPathXmlApplicationContext("applicationContext.xml");
//      获取容器中管理的对象,getBean方法中的参数即为bean的id属性值
        Dog dog = (Dog) ac.getBean("dog");
//      测试容器实例化的对象是否成功
        dog.shout();
        System.out.println(dog.getDogName());
    }
}

package com.icss.model;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class BoyTest {

    @Test
    public void testD(){
//      获取spring容器对象
        ApplicationContext ac = 
                new ClassPathXmlApplicationContext("applicationContext.xml");
//      获取容器中管理的对象,getBean方法中的参数即为bean的id属性值
        Boy boy = (Boy) ac.getBean("boy");
//      测试容器实例化的对象是否成功
        
        System.out.println(boy.getDog().getDogName());
    }
}

值得注意的是,当第一次加载spring容器对象时,spring容器对象会全部实例化里面的所有bean,即所有bean的构造函数都执行了。

构造器方式,普通工厂的方式,静态工厂的方式进行实例化

先建立一个person类的bean

public class Person {

    private String name;
    private String age;
    
    
    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getAge() {
        return age;
    }


    public void setAge(String age) {
        this.age = age;
    }


    public void eat()
    {
        System.out.println("人类必须要吃食物,否则挂掉");
    }
}

1、构造器方式
容器配置文件:

<bean id="person" class="com.icss.model.Person">
    </bean>

测试方法:

@Test
    public void testD(){
//      获取spring容器对象
        ApplicationContext ac = 
                new ClassPathXmlApplicationContext("applicationContext.xml");
//      获取容器中管理的对象,getBean方法中的参数即为bean的id属性值
        Person person = (Person) ac.getBean("person");
//      测试容器实例化的对象是否成功
        
        person.eat();
        //System.out.println(boy.getDog().getDogName());
    }

2、静态工厂方式

public class PersonFactory {

    public static Person getPerson()
    {
        return new Person();
    }
}
<bean id="static_person" class="com.icss.model.PersonFactory" factory-method="getPerson">
    </bean>

3、普通工厂方式

public class PersonFactory2 {
    public  Person getPerson()
    {
        return new Person();
    }
}
<bean id="nostatic_person" class="com.icss.model.PersonFactory2">
    </bean>

    <bean id="person2" factory-bean="nostatic_person" factory-method="getPerson">
</bean>

相关文章

  • Spring初步学习(一)

    spring的特点为:轻量级,无侵入式设计功能模块:test:提供单元测试的支持core container:IO...

  • 踏上Spring的征程1-初识Spring

    注意该篇文章从概念入手,不涉及代码 学习Spring之前,先初步了解Spring的两大概念,注意以下是我的初步理解...

  • 第三周学习报告

    本周主要是学了以下三个方面: Redis哨兵模式主从配置 初步学习Netty网络编程框架 初步学习spring b...

  • Spring初步学习(二)

    spring配置文件中每个bean默认为单例的,即通过配置scope的属性 多例 单实例的bean组件默认初始化的...

  • Spring AOP及JDBC模板

    在上一篇博客中已经初步介绍了Spring的学习的一些使用和IOC控制反转等入门学习的东西,接下来就是spring往...

  • Spring框架学习之高级依赖关系配置(一)

    上篇文章我们对Spring做了初步的学习,了解了基本的依赖注入思想、学会简单的配置bean、能够使用Spring容...

  • Spring&Hibernate框架入门学习

    理解loC原理,初步掌握Spring框架的使用 理解ORM原理,掌握Hibernate的使用 Spring 概念:

  • 初识Thymeleaf

    在学习spring boot的过程当中,顺便了解到了Thymeleaf,发现它真的挺好用,这里先初步整理一下基础知...

  • Spring MVC学习(01)入门

    内容概览 介绍 Spring MVC初步学习和配置 接受参数 处理表单 总结 1、 介绍 我们开发的很多应用实际上...

  • Spring IoC 到底是什么?

    前言 「 上一篇文章 」我们对 Spring 有了初步的认识,而 Spring 全家桶中几乎所有组件都...

网友评论

      本文标题:Spring初步学习(一)

      本文链接:https://www.haomeiwen.com/subject/gxgvyxtx.html