Spring入门及IOC的介绍

一、Spring概念:
Spring 是一个轻量级的Java开源框架,是为了解决企业应用开发的复杂性而创建的。
Spring 是容器框架,创建bean(相当于一个对象),维护bean之间的关系。实现了程序的解耦合和面向切面(AOP)的容器框架
Spring也是一种集成性框架,可以和其他框架进行整合,从而实现多个框架的协同开发。常见的有(SSH、SSM)。
这里简单打个比方,介绍Spring框架的重要地位

struts2是web框架相对于销售经理,hibernate是orm框架相当于仓库经理,它们两个都是非常优秀的框架,但是相互之间谁都不服谁,而Spring就相当于CEO,可以很好的管理它们,这样好了大家都能一起愉快的协同合作了。

二、Spring的优点:
方便解耦,简化开发 (高内聚低耦合) 
Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理 
spring工厂是用于生成bean
AOP编程的支持 
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
声明式事务的支持 
只需要通过配置就可以完成对事务的管理,而无需手动编程
方便程序的测试 
Spring对Junit4支持,可以通过注解方便的测试Spring程序
方便集成各种优秀框架 
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
降低JavaEE API的使用难度 
Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
 

&&接下来让我们看看示例

1.导入依赖

<?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>org.example</groupId>
  <artifactId>spring01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>spring01 Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <!--junit-->
    <junit.version>4.13</junit.version>
    <!--servlet-->
    <servlet.version>4.0.1</servlet.version>
    <!--spring-->
    <spring.version>5.0.1.RELEASE</spring.version>
  </properties>

  <dependencies>
    <!--junit-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>

    <!--servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${servlet.version}</version>
      <scope>provided</scope>
    </dependency>

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

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

  </dependencies>

  <build>
    <finalName>spring01</finalName>
    <plugins>
      <!--第一步就是配置maven-compiler-plugin插件-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
          <encoding>${project.build.sourceEncoding}</encoding>
        </configuration>
      </plugin>


    </plugins>
  </build>
</project>

修改web.xml版本为3.0

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
</web-app>

建一个Hello实体类

package com.zking.spring01.entity;

import java.io.Serializable;

public class Hello implements Serializable {
    private  String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {

        this.name = name;
    }

    public Hello() {
        System.out.println("new Hello()");
    }

    public Hello(String name) {
        System.out.println("使用有参的构造方法初始化");
        this.name = name;
    }

    @Override
    public String toString() {
        return "Hello{" +
                "name='" + name + '\'' +
                '}';
    }
    public void  init(){
        System.out.println("正在初始化init方法");
    }
}

Spring的配置文件

在resources文件夹下新建一个配置文件spring.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来直接管理Hello的实例对象-->
    <bean id="hello" name="a b c" class="com.zking.spring01.entity.Hello" scope="prototype" init-method="init">
        <property name="name">
            <value>李四</value>
        </property>
    </bean>
</beans>

再来个Demo案例

package com.zking.spring01.util;
 
import com.zking.spring01.entity.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class Demo {
    public static void main(String[] args) {
        //1.什么是spring
        //Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
        //核心概念:
        //控制反转 IOC:控制权由应用代码中转到了外部容器
        //依赖注入 DI:由容器动态的将某种依赖关系注入到组件之中
        //示例:biz层依赖dao接口
        //作用:用于管理各种各样的JavaBean对象
 
        //理解:将以前由程序员实例化对象/赋值的工作交给了spring处理
 
        //示例1:传统方式与spring方式的区别
        /*Hello hello=new Hello();
        hello.setName("张三");
        System.out.println(hello);*/
 
        //初始化spring上下文(context),ioc:用于管理各种各样的JavaBean对象的容器框架
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        Hello hello = ac.getBean("hello", Hello.class);
        System.out.println(hello.getName());
    }
 
}

1.读取加载单个文件

ApplicationContext ac=new ClassPathXmlApplicationContext("配置文件名");
2.读取加载多个文件

ApplicationContext ac=new ClassPathXmlApplicationContext(new String[]{"配置文件名1","配置文件名2"});
3.通配方式

ApplicationContext ac=new ClassPathXmlApplicationContext("spring-*.xml");


依赖注入的作用: 将以前由程序员实例化对象/赋值的工作交给了spring处理

5.2,IoC配置文件详解
1.id:在容器中查找Bean的id(唯一、且不能以/开头)
2.class:bean的完整类名 
3.name:在容器中查找Bean的名字(唯一、允许以/开头、允许多个值,多个值之间用逗号或空格隔开)
4.scope:(singleton|prototype)默认是singleton
        4.1.singleton(单例模式):在每个Spring IoC容器中一个bean定义对应一个对象实例
        4.2.prototype(原型模式/多例模式):一个bean定义对应多个对象实例
5.abstract:将一个bean定义成抽象bean(抽象bean是不能实例化的),抽象类一定要定义成抽象6.bean,非抽象类也可以定义成抽象bean
7.parent:指定一个父bean(必须要有继承关系才行)
8.init-method:指定bean的初始化方法
9.constructor-arg:使用有参数构造方法创建javaBean
 

日期格式

Demo的代码

 

 复杂属性

数组 ,List ,Map , Properties

 总结:IOC需要理解的就是,IOC将以前由程序员实例化对象/赋值的工作交给了spring处理

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值