Spring-第一篇-快速入门

学习目标:

本篇文章将会带领大家学习到一些关于spring快速入门的技巧,通过学习,可以达到了解spring到底是干嘛的,如何进行spring程序的编写。

  • 适宜人群:
    • 刚刚学习完javaweb/jsp的小伙伴
    • 对maven有一定的了解


        在学习javaweb的时候,应该所有同学都听说过框架这个名词,感觉好厉害的样子,其实就是很厉害,感觉学习肯定非常困难,其实不然。难从来都是对于造物者来说的,对于应用者,一点都不难,希望大家在学习的过程中,不要有太大的思想负担,就想的非常简单就好了。

1.spring简介

        Spring框架是一个开源的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、审判日等众多Web框架组合使用,并且可以与 Swing等桌面应用程序组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。 在这篇文章中呢,主要介绍下spring core的简单知识。

2.spring优势

        那使用spring到底有什么好处呢?下面我来介绍一下我对于spring的体会和了解,如有其他见解,请在评论区留言,集百家所长,大家互相学习嘛。

  • 解耦合

在javaweb初级阶段我们就一直听到解耦合的概念,但是没有太大的感觉,估计也就连接池和数据库工具类利用xml或者properties配置文件加载的方式解耦罢了。而spring提供了一种IOC容器,可以将对象的依赖关系交由spring来控制,也就是你不用再像之前一样new对象了,想用哪个对象直接在配置文件配置一下,用的时候取就好了,避免了硬编码。

  • 声明式编程方式

之前我们的编程方式都是编程时方式,而在spring中,大多数是声明式,那什么叫做声明式编程方式呢?其实就是用一个标记去标识相关信息,底层去对这些标识符进行解析处理。在下面呢,会有例子来直接体现。

        这篇文章呢,主要讲这两个方面的优势,至于别的,我会在别的文章中发表,希望大家多提点意见,共同进步。

3.spring体系结构

 这里呢,也没什么好说的,图片是网上找的,大家了解了解即可,接下来上干货。

4.spring快速入门

  • spring程序开发步骤

1. 导入spring maven坐标或者jar包,都可以,我这里使用了maven坐标

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>5.3.14</version>
</dependency>

2. 编写dao接口和实现类

public interface UserDao {
	public void insert();
}

public class UserDaoImpl implements UserDao {
    @Override
    public void insert() {
    	System.out.println("insert running……");
	}
}

3. 创建spring核心配置文件

  • 在resources下创建application Context.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">
        
</beans>

4. 在配置文件中配置dao的实现类

// 加入该行配置即可
<bean id="userDao" class="gyl.top.dao.impl.UserDaoImpl"></bean>

5. 使用spring API获得该对象实例

@Test
public void test1(){
    ApplicationContext applicationContext = new
    ClassPathXmlApplicationContext("applicationContext.xml");
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");
    userDao.insert();
}

5.spring配置文件介绍

        上面我们简单的使用了bean标签,它的作用其实就是将dao的实现对象交给spring容器,不难看出,这里底层肯定使用了反射机制,通过类的全限定名去创建对象。而反射默认调用的是类的无参构造,所以如果没有无参构造函数则不能创建该对象。

        基本属性:

                id:bean实例在spring容器中的唯一标识

                class:bean实例的全限定名

5.1bean标签的范围配置

        scope:指对象的作用范围

 1)当scope的取值为singleton时

        Bean的实例化个数:1个

        Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例

        Bean的生命周期:

                 对象创建:当应用加载,创建容器时,对象就被创建了

                对象运行:只要容器在,对象一直活着

                对象销毁:当应用卸载,销毁容器时,对象就被销毁了

2)当scope的取值为prototype时

        Bean的实例化个数:多个

        Bean的实例化时机:当调用getBean()方法时实例化Bean 

        Bean的生命周期:

                对象创建:当使用对象时,创建新的对象实例

                对象运行:只要对象在使用中,就一直活着

                对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了

5.2bean的声明周期配置

        init-method:指定类中的初始化方法名称

        destroy-method:指定类中销毁方法名称

6.bean实例化的三种方式

  • 无参构造方法实例化

      它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败

  • 工厂静态方法实例化

public class StaticFactoryBean {
    public static UserDao createUserDao(){
    	return new UserDaoImpl();
    }
}
<bean id="userDao" class="gyl.top.factory.StaticFactoryBean"
	factory-method="createUserDao" />
  • 工厂实例方法实例化

public class DynamicFactoryBean {
    public UserDao createUserDao(){
    	return new UserDaoImpl();
    }
}
<bean id="factoryBean" class="gyl.top.factory.DynamicFactoryBean"/>
<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>

文章一般,都是自己自学所得,希望大家多多指正!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值