【java开发系列】—— spring简单入门示例

回顾

  1 JDK安装html

  2 Struts2简单入门示例spring

前言编程

  做为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已。此次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转\依赖注入,和AOP面向切面编程。微信

  1 控制反转IOC\依赖注入DI,由于翻译的不一样,所以有两个名字。

  控制反转意思就是说,当咱们调用一个方法或者类时,再也不有咱们主动去建立这个类的对象,控制权交给别人(spring)。框架

  依赖注入意思就是说,spring主动建立被调用类的对象,而后把这个对象注入到咱们本身的类中,使得咱们可使用它。函数

  

  举个简单的例子,程序猿加班了一个月,很累,想要放松下,因而去找人吃“麻辣烫”。this

  不使用spring的传统作法是,咱们本身经过陌陌微信等神器,主动寻找目标,花费大量人力物力,达成协议后,申请“场所”办正事。编码

  而使用spring的作法就很方便了,咱们直接去某个场所,那个地方直接就有目标候着!spa

  这是多么神奇的功能啊!翻译

 

(此图涉及暴力,18岁如下自行负责)  

  2 AOP面向切面编程

  咱们把一个方法看作是一个切面,在这个切面的先后或者周围,均可以设置其余的处理方法,进行一些特殊的处理。

  好比一个“吃蛋糕”的方法,在这个方法前须要“拆包装”,方法后须要“打扫卫生”,均可以经过这种编程方式来实现。

 

  那么下面看下它的编码过程!

  1 首先咱们须要一个bean,用某种方法(设置注入须要有setter函数,构造注入须要有构造函数,相应的bean.xml配置文件也会不一样)设定注入方式。

  2 bean.xml,设置bean与类的关系,并关联默认的注入值。

  3 获取bean.xml文件,建立实例对象,直接调用方法。

  能够看到,咱们开发的程序只有第三步的“建立实例对象,直接调用方法”,并无为他进行初始化等工做,就能够直接调用它的方法,获取它的值。其实spring在程序初始化的时候,就会为咱们把bean对应的对象注入进来,帮助咱们完成初始化,所以咱们只要经过一个引用对象,就能够直接调用了。

 

  最后咱们写一个简单的依赖注入的小样例!

  1 须要的jar包和文件结构

  jar包下载地址:http://pan.baidu.com/s/1sjDbzrR

  

  2 bean.xml配置文件,放在src目录下

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://www.springframework.org/schema/beans"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 6     <bean id="person" class="com.test.bean.Person">
 7         <property name="name" value="xingoo"/>
 8         <property name="age" value="12"/>
 9     </bean>
10 </beans>

 

  3 Person类,这里使用的是set设置注入方式

package com.test.bean;

public class Person {
    
    private String name;
    private int age;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void info(){
        System.out.println("一块儿来吃麻辣烫!");
        System.out.println("name:"+getName()+" age:"+getAge());
    }
}

  4 test类

package testSpring;

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

import com.test.bean.Person;

public class test {
    public static void main(String[] args){
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//读取bean.xml中的内容
        Person p = ctx.getBean("person",Person.class);//建立bean的引用对象
        p.info();
    }
}

  5 执行结果