欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring之再学习(1)

程序员文章站 2022-07-12 09:15:18
...

spring之再学习(1)

Spring 4.x 官方博客

Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发
布。
该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最
初由Rod Johnson和Juergen Hoeller等开发。
Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量
的属性文件和帮助类。

Sping体系

spring之再学习(1)

2 Spring 快速入门

  • 2.1 编写流程
    maven依赖或者下载jar包
    <!--spring的依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.9.RELEASE</version>
    </dependency>
  • 2.2 SayHello 实现
★Spring核心开发包
  • spring-core-3.2.2.RELEASE.jar
  • 包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心。
  • spring-beans-3.2.2.RELEASE.jar
  • 所有应用都要用到的,它包含访问配置文件、创建和管理bean
  • 以及进行Inversion of Control(IoC) / Dependency Injection(DI)操作相关的所有类
2.2.2 编写业务类
/**
 * Created by wanggs on 2017/7/7.
 */
public class SayHello {

    public void sayHello() {
        System.out.println("Spring4X......");
    }
}
2.2.3 传统方式创建实例
/**
 * Created by wanggs on 2017/7/7.
 */
public class SayHelloTest {
    public static void main(String[] args) {
        //传统方式创建实例(对象)
        SayHello sayHello = new SayHello();
        sayHello.sayHello();
    }
}
2.2.4 Spring IoC控制反转创建实例
  • 编写配置文件( Spring 容器)
<?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: bean 在容器的名称不能重复 -->
    <!--class: 放入spring容器的包的完全限定名-->
    <bean id="sayHello" class="com.wanggs.pojo.SayHello"> </bean>
</beans>
  • 从spring容器获得对象实例
package com.wanggs.pojo;

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

/**
 * Created by wanggs on 2017/7/7.
 */
public class SayHellTest {
    public static void main(String[] args) {

        //读取配置文件,使用spring 控制反转,交予spring创建对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //"sayHello"-->>即配置文件 (id: bean 在容器的名称)
        SayHello sayHello = (SayHello) applicationContext.getBean("sayHello");

        sayHello.sayHello();

        //结果: Spring4X......
    }
}

IoC解释

IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建HelloService对象的控制权,交由Spring框架管理,简单说,就是创建HelloService对象控制权被反转到了Spring框架
  • 2.2.5 传统方式设置内容 注意:加了一个name属性
/**
 * Created by wanggs on 2017/7/7.
 */
public class SayHelloTest {
    public static void main(String[] args) {
        //传统方式创建实例(对象)
        SayHello sayHello = new SayHello();
        sayHello.setName("tom");//手动设置值
        sayHello.sayHello();
    }
}
  • 2.2.6 Spring DI 设置字段内容
编写配置文件
<?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: bean 在容器的名称不能重复 -->
    <!--class: 放入spring容器的包的完全限定名-->
    <bean id="sayHello" class="com.wanggs.pojo.SayHello">
    <!--spring设置-->
        <property name="name" value="tom"/>
    </bean>
</beans>
从spring直接获得注入的内容
package com.wanggs.pojo;

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

/**
 * Created by wanggs on 2017/7/7.
 */
public class SayHellTest {
    public static void main(String[] args) {

        //读取配置文件,使用spring 控制反转,交予spring创建对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //"sayHello"-->>即配置文件 (id: bean 在容器的名称)
        SayHello sayHello = (SayHello) applicationContext.getBean("sayHello");
        sayHello.setName("tom");
        sayHello.sayHello();

        //结果: Spring4X......
    }
}

new一个对象即IOC() 对象的属性设置即DI(property)

再来一个例子

3.1 目标类
  • 创建BookService接口和实现类
  • 创建BookDao接口和实现类
  • 将dao和service配置 xml文件
  • 使用api测试
3.1.1 dao

/**
 * Created by wanggs on 2017/7/7.
 */
public interface BookDao {
    public abstract void addBook();
}

//Dao的实现类
/**
 * Created by wanggs on 2017/7/7.
 */
public class BookDaoImpl implements BookDao {
    public void addBook() {
        System.out.println("DI add Book");
    }
}
3.1.2 service

/**
 * Created by wanggs on 2017/7/7.
 */
public interface BookService {
    public abstract void saveBook();
}
// BookService的实现类
/**
 * Created by wanggs on 2017/7/7.
 */
public class BookServiceImpl implements BookService{

    //之前的方式 接口 = 实现类;(多态)
    //spring: 接口+set方法
    private BookDao bookDao;
    public void setBookDao(BookDao bookDao ){
        this.bookDao = bookDao;
    }
    public void saveBook() {
        this.bookDao.addBook();
    }
}
3.2 配置文件
<?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: bean 在容器的名称不能重复 -->
    <!--class: 放入spring容器的包的完全限定名-->
    <bean id="sayHello" class="com.wanggs.pojo.SayHello">
        <property name="name" value="tom"/>
    </bean>

    <!--property 用于属性注入
        name: 属性的名字==>>private BookDao bookDao;
        ref: 引用另一个bean的id
    -->
    <bean id="bookService" class="com.wanggs.service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDao"/>
    </bean>
    <bean id="bookDao" class="com.wanggs.dao.impl.BookDaoImpl"/>
</beans>
3.3 测试
/**
 * Created by wanggs on 2017/7/7.
 */
public class BookServiceTest {
    public static void main(String[] args) {
        // 读取配置文件,使用spring控制反转交给spring创建对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // "bookService"-->>即配置文件 (id: bean 在容器的名称)
        BookService bookService = (BookService) applicationContext.getBean("bookService");
        bookService.saveBook();
    }
    //结果:  DI add Book

}
相关标签: java Spring

上一篇: 查找

下一篇: 查找