「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」
前言
路遥说,在一个平凡的世界里,人要承受一定的痛苦和不安。但只要相信个体奋斗的力量,坚定地与生存搏斗,就能过上想要的生活。
很喜欢《平凡的世界》的一句话,一直不断的鼓励我努力向前,也送个各位看到这个写的很烂的文章的人,共勉~
Spring框架概述
1、Spring是轻量级的开源的JavaEE框架
2、Spring可以解决企业应用开发的复杂性
3、Spring有两个核心部分:IOC和Aop
(1)IOC:控制反转,把创建对象过程交给Spring进行管理
(2)Aop:面向切面,不修改源代码进行功能增强
4、Spring特点
(1)方便解耦,简化开发
(2) Aop编程支持
(3)方便程序测试
(4)方便和其他框架进行整合
(5)方便进行事务操作
(6) 降低API开发难度
入门案例
1.下载Spring5
下载5.2.6
2.idea新建个java工程
3.导入spring核心的jar包
4.通过spring的方式创建对象
java代码
package com.caq.spring5;
public class User {
public void add(){
System.out.println("add.....");
}
}
xml代码
选择spring配置文件,idea中也是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">
<!-- 1配置User对象创建-->
<bean id="user" class="com.caq.spring5.User"></bean>
</beans>
测试类测试
public class TestSpring5 {
@Test
public void testAdd() {
// 加载spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
// 获取配置创建的对象
User user = context.getBean("user", User.class);
System.out.println(user);
user.add();
}
}
com.caq.spring5.User@18bf3d14
add.....
预备知识
单例设计模式--懒汉式,饿汉式
单例设计模式是一种很常见的设计模式
比如说某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象 再通过这个单例对象获取这些配置信息。从而简化了在比较复杂的环境下配置管理。 通过上面的介绍,我们可以知道单例模式最重要的就是要保证一个类只有一个实例并且这个类易于被访问,那么要怎么做才能保证一个类具有一个实例呢?一个全局变量使得一个对象可以被访问,但是这样做却不能防止你实例化多个对象。 一个更好的办法就是,让该类自身负责保存它的唯一实例。并且这个类保证没有其他的实例可以被创建。
怎样保证一个对象的唯一总结如下:
1.为了避免其它程序过多的建立该类的对象,先禁止其它程序建立该类对象实例(将构造器私有化)
2.为了方便其它程序访问该类的对象,只好在本类中自定义一个对象,由1可知该对象是static的,并对外提供访问方式。
分析举例
在JAVA中单例设计模式
1.饿汉式如下所示
/**
* Created by ${wuyupku} on 2019/3/15 12:39
*/
class Singleton01{
private static Singleton01 modle = new Singleton01();//声明对象同时私有化
private Singleton01(){}//构造函数私有化
public static Singleton01 getInstance(){//向外声明访问该类对象的方法
return modle;
}
}
2.懒汉式如下所示
/**
* Created by ${wuyupku} on 2019/3/15 12:43
*/
class Singleton02 {
private static Singleton02 modle = null;//声明对象,不实例化
private Singleton02() {}//构造函数私有化
public static Singleton02 getInstance(){//向外提供访问该类对象的方法
if (modle == null)
modle = new Singleton02();
return modle;
}
}
到此我们总结两点:
1.饿汉式这种方式加载类对象,我们称作:预先加载方式。
2.懒汉式这种方式加载类对象,我们称作:延迟加载方式。