本篇文章将会带领大家学习到一些关于spring快速入门的技巧,通过学习,可以达到了解spring到底是干嘛的,如何进行spring程序的编写。
- 适宜人群:
- 刚刚学习完javaweb/jsp的小伙伴
- 对maven有一定的了解
在学习javaweb的时候,应该所有同学都听说过框架这个名词,感觉好厉害的样子,其实就是很厉害,感觉学习肯定非常困难,其实不然。难从来都是对于造物者来说的,对于应用者,一点都不难,希望大家在学习的过程中,不要有太大的思想负担,就想的非常简单就好了。
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的简单知识。
那使用spring到底有什么好处呢?下面我来介绍一下我对于spring的体会和了解,如有其他见解,请在评论区留言,集百家所长,大家互相学习嘛。
在javaweb初级阶段我们就一直听到解耦合的概念,但是没有太大的感觉,估计也就连接池和数据库工具类利用xml或者properties配置文件加载的方式解耦罢了。而spring提供了一种IOC容器,可以将对象的依赖关系交由spring来控制,也就是你不用再像之前一样new对象了,想用哪个对象直接在配置文件配置一下,用的时候取就好了,避免了硬编码。
之前我们的编程方式都是编程时方式,而在spring中,大多数是声明式,那什么叫做声明式编程方式呢?其实就是用一个标记去标识相关信息,底层去对这些标识符进行解析处理。在下面呢,会有例子来直接体现。
这篇文章呢,主要讲这两个方面的优势,至于别的,我会在别的文章中发表,希望大家多提点意见,共同进步。
这里呢,也没什么好说的,图片是网上找的,大家了解了解即可,接下来上干货。
1. 导入spring maven坐标或者jar包,都可以,我这里使用了maven坐标
org.springframework
spring-context
5.3.14
2. 编写dao接口和实现类
public interface UserDao {
public void insert();
}
public class UserDaoImpl implements UserDao {
@Override
public void insert() {
System.out.println("insert running……");
}
}
3. 创建spring核心配置文件
4. 在配置文件中配置dao的实现类
// 加入该行配置即可
5. 使用spring API获得该对象实例
@Test
public void test1(){
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.insert();
}
上面我们简单的使用了bean标签,它的作用其实就是将dao的实现对象交给spring容器,不难看出,这里底层肯定使用了反射机制,通过类的全限定名去创建对象。而反射默认调用的是类的无参构造,所以如果没有无参构造函数则不能创建该对象。
基本属性:
id:bean实例在spring容器中的唯一标识
class:bean实例的全限定名
scope:指对象的作用范围
1)当scope的取值为singleton时
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
Bean的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
2)当scope的取值为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
Bean的生命周期:
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了
init-method:指定类中的初始化方法名称
destroy-method:指定类中销毁方法名称
无参构造方法实例化
它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败
工厂静态方法实例化
public class StaticFactoryBean {
public static UserDao createUserDao(){
return new UserDaoImpl();
}
}
工厂实例方法实例化
public class DynamicFactoryBean {
public UserDao createUserDao(){
return new UserDaoImpl();
}
}
文章一般,都是自己自学所得,希望大家多多指正!