• Spring入门-------------1


    Spring是一个开源框架,为简化企业级应用开发而生,使用Spring可以使简单的JavaBean 实现以前只有EJB才能实现的功能。Spring 是一个IOC和Aop容器框架。

    特性:

    轻量级Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API

    依赖注入(DI --- dependency injection、IOC)

    面向切面编程(AOP --- aspect oriented programming)

    容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期

    框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象

    一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 Spring JDBC)

     创建maven工程:

    修改pom.xml,引入jar包

    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.xt</groupId>
      <artifactId>spring.ioc</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>spring.ioc Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency> 
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
        </dependency>
        <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
         <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
             <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.10.RELEASE</version>
        </dependency>
             <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.10.RELEASE</version>
        </dependency>
      </dependencies>
      <build>
        <finalName>spring.ioc</finalName>
      </build>
    </project>

    创建一个Apple类:

    package com.xt.spring.ioc;
    
    public class Apple extends Fruit{
    
        String name="苹果";
        public void appleInit(){
            System.out.println("Apple还没有生产");
        }
        public void appleDestroy(){
            System.out.println("Apple结束生产");
        }
    }

    配置spring文件,即在src/main/resources下创建Spring文件夹,再文件夹中创建applicationContext.xml文件(也可以只在在src/main/resources下创建,不过这样做回事文件混乱)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                   http://www.springframework.org/schema/beans/spring-beans.xsd
                   http://www.springframework.org/schema/context
                   http://www.springframework.org/schema/context/spring-context.xsd ">
        <!-- 
            在IOC容器中,所有的java类统称为 java bean,使用<bean>标签将javabean配置到IOC容器中
            
            bean标签两个重要的属性:1、class 引用javabean的全类名  2、id 为javabean定义一个ID,此ID不能在ioc容器中重复
         init-method:表示bean对象创建完毕,调用此初始化方法
         destroy-method:当bean回收时,调用此方法
         当scope表示Bean的作用域,默认值singleton,表示IOC容器中每个类默认只会产生一个Bean,也就是单例模式。
         当scope的值定义为prototype时,表示每次从IOC容器中获取的都是新的对象(在获取时实例化对象)。
    下面是不同的bean,可以尝试运行一下,看看不同之处     

    <bean id="apple" class="com.xt.spring.ioc.Apple" init-method="appleInit" destroy-method="appleDestory"></bean> <bean id="orange" class="com.xt.spring.ioc.Orange"></bean>
        <bean id="apple" class="com.xt.spring.ioc.Apple" ></bean>
    -->
    <bean id="apple" class="com.xt.spring.ioc.Apple" init-method="appleInit" destroy-method="appleDestory"></bean> </beans>

    最后创建一个测试类,

    package com.xt.spring.ioc;
    
    
    import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    /**
     * IOC容器中对象的实例化过程:
     * 1、IOC容器实例化
     * 2、IOC实例化完成之后,立刻开始实例化IOC容器中配置的javaBean
     * 3、使用javaBean
     * 
     * 在spring IOC 容器中每个类默认只会生产一个Bean,也就单例模式。
     *
     */
    public class test {
     private ApplicationContext ioc;
     @Before
     public void iocInit(){
         ioc = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
     }
     @Test
     public void iocTest(){
         Apple a = ioc.getBean("apple",Apple.class);
         Apple a1 = ioc.getBean("apple",Apple.class);
         System.out.println("======="+(a==a1));
         //Orange o = ioc.getBean("orange",Orange.class);
         a.eat();
     }
    }

    在Spring中,可以在<bean>元素的scope属性里设置Bean的作用域。

    Singleton:SpringIOC 容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init=”true”来延迟初始化bean,这时候,只有第一次获取的bean才会初始化bean。

    Prototype: 每次从容器中获取bean都是新的对象。

    Request: 每次http请求都会创建一个新的bean,该作用域只适用于WebApplicationContext环境。

    Session:类似Request,每次有新的绘画都会创建一个新的bean,该作用域只适用于WebApplicationContext环境。

    你一定会喜欢那个因为喜欢她而发光的自己!
    个人博客:http://www.yanghelong.top
  • 相关阅读:
    c# 大白话告诉你Thread的Sleep和Join的区别
    c# winform richtextbox控制每行颜色 + 滚动条始终滚动到最底部
    c# winform禁止窗口多开
    winform窗口关闭,进程没有关掉的解决办法
    System.Threading.Timer定时器使用注意事项
    c# socket 心跳 重连
    javascript 从对象数组中 按字段/属性取最大值或最小值
    codesmith设置mysql的连接字符串
    .net桌面程序或者控制台程序使用NLog时的注意事项
    vue获取不到后端返回的响应头
  • 原文地址:https://www.cnblogs.com/zzu-general/p/8732589.html
Copyright © 2020-2023  润新知