1. 初探spring

  1. 什么是spring
    Spirng 是分层的Java se/ee应用full-stack(web层mvc dao层jdbc模板 业务事务管理)轻量级开源框架,以IoC(inverse of control :反转和控制) 和
    AOP(Aspect Oriented Programming: 面向切面编程)为内核。

    还能整合开源世界 著名的第三方框架和类库

  2. spring发展历程
    1997年 EJB思想 。。。 2006年 ejb3.0

    2017 5.0版本发布

  3. spring的优势

    3.1 方便解耦,简化开发(ioc创建dao层对象了)
    3.2 aop面向切面编程
    3.3 声明式事务的支持(配置一片方法控制事务控制)
    3.4 方便程序测试
    3.5 方便集成各种优秀的框架
    3.6 降低JavaEE api的使用难度
    3.7 Java源码时经典的学习范例

  4. spring的体系结构

    4.1 底层 核心控制器
    beans 创建对象用的
    core 核心
    context spring的上下文
    spEl spring el表达式
    4.2 上一层
    aop,aspects,instrumentation,messaging

  5. spring快速入门

    5.1 spring程序开发步骤
    5.1.1 导入spring开发的基本坐标包
    5.1.2 编写Dao接口和实现类
    5.1.3 创建spring核心配置文件(xml文件)
    5.1.4 在spring配置文件中配置userdaoimpl
    5.1.5 使用spring的api获得bean实例 (创建applicationContext对象)

  6. spring下载地址

https://repo.spring.io/release/org/springframework/spring/

2. spring bean的创建

2.1 idea创建maven依赖的项目

2.2 完成项目创建

2.3 配置pom.xml, 引入maven中的依赖关系(这里引入spring框架滴)

该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。


2.4 引入框架

<?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>spring_02</artifactId> <!-- 项目名 --><version>1.0-SNAPSHOT</version><dependencies> <!-- 导入依赖关系 spring框架 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.10.RELEASE</version></dependency><dependency><groupId>junit</groupId> <!-- junit 用来测试@Test注解 --><artifactId>junit</artifactId><version>4.13</version></dependency></dependencies></project>

2.5 终于可以配置bean拉,啊啊啊

  • 对dao接口的实现类进行bean的创建
package com.lovely.dao;public interface UserDao {public void save();
}
  • 实现类
package com.lovely.dao.impl;import com.lovely.dao.UserDao;public class UserDaoImpl implements UserDao {public void save() {System.out.println("save running...");}}
  • 创建spring核心配置文件applicationContext.xml 配置bean
<?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"><!-- 配置bean id为唯一标识 class为类所在的全路径1--><bean id="userDao" class="com.lovely.dao.impl.UserDaoImpl"> </bean></beans>
  • 测试创建的bean
package com.lovely.demo;import com.lovely.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserDaoDemo {public static void main(String[] args) {// spring客户端ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");// getBean(id) 来得到实体类对象UserDao dao = (UserDao) app.getBean("userDao");dao.save();}
}
  • 打印结果

  • bean通过工厂方式创建

    <!--  工厂模式 静态方法实例bean  --><bean id="userDao" class="com.lovely.Factory.StaticFactory" factory-method="getUserDao"></bean>
    <!--  工厂实例方法创建bean  --><bean id="factory" class="com.lovely.Factory.DynamicFactory"></bean><bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>

2.6 bean的作用域标签范围

  • bean的单例模式和多例模式
 // spring容器决定帮你创建单个userdao对象 还是多个userdao对象。<bean id="userDao" class="com.lovely.dao.impl.UserDaoImpl" scope="singleton"></bean><!-- crtl + d 快速赋值一行 scope = singleton 单个对象 scope = prototype 多例模式 -->
  • 测试
package com.lovely.test;import com.lovely.dao.UserDao;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringTest {@Testpublic void test1() {ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao1 = (UserDao) app.getBean("userDao");UserDao userDao2 = (UserDao) app.getBean("userDao");// 如果配置bean scope是单例模式 则只产生一个对象// 如果配置bean scope是多例的 则spring容器中每次产生一个对象System.out.println(userDao1 == userDao2);/*** bean标签的创建时机*      singleton spring web容器创建,只有一个*      prototype 每次创建对象时 就会创建bean 会创建多个 gc回收*/}}

3. bean的生命周期

  • bean对象的创建,初始化,容器销毁,bean销毁
package com.lovely.dao.impl;import com.lovely.dao.UserDao;public class UserDaoImpl implements UserDao {public UserDaoImpl() {// 确定bean的生命周期 singleton prototypeSystem.out.println("user dao 创建了");}public void init() {System.out.println("user bean init...");}public void destroy() {System.out.println("user bean destory...");}
}
  • 配置文件
<bean id="userDao" class="com.lovely.dao.impl.UserDaoImpl" init-method="init" destroy-method="destroy">
</bean>
  • 测试
 @Testpublic void test2() {// bean在spring容器中的出生创建ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao dao = (UserDao) app.getBean("userDao");System.out.println(dao);app.close();}
  • 从容器的加载到对象的创建,初始化,容器销毁,bean销毁

spring bean的创建,生命周期相关推荐

  1. 一张图搞懂Spring bean的完整生命周期

    转载自 一张图搞懂Spring bean的完整生命周期 一张图搞懂Spring bean的生命周期,从Spring容器启动到容器销毁bean的全过程,包括下面一系列的流程,了解这些流程对我们想在其中任 ...

  2. Spring Bean作用域与生命周期

    目录 Bean的作用域: Bean有六大行为模式 1.singleton:单例模式(默认) 2.prototype: 原型模式(多例模式) 3.request: 请求作用域(Spring MVC) 4 ...

  3. 把对象的创建交给spring来管理——  1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期

    把对象的创建交给spring来管理 spring对bean的管理细节     1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期 创建Bean的三种方式 ...

  4. Spring 了解Bean的一生(生命周期)

    该篇博客就来了解IoC容器下Bean的一生吧,也可以理解为bean的生命周期. 首先你需要知道的知识 在IoC容器启动之后,并不会马上就实例化相应的bean,此时容器仅仅拥有所有对象的BeanDefi ...

  5. SpringBoot 系列教程(五十):Spring Boot 1.X生命周期已结束 ,Spring Boot 2.X 走向舞台中心

    Spring Boot 1.x 生命周期已结束 2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束. 官方宣 ...

  6. J2EE高级开发框架小课程之Spring框架2——Spring容器作用域,生命周期,Spring管理对象之间依赖关系

    Spring容器作用域 Spring创建对象的作用域:Spring在创建对象时,默认只创建一个(单例模式) scope: singleton(默认 单例) 构造器就一次,结果true prototyp ...

  7. Spring的作用域与生命周期

    文章目录 一.lombok的安装与使用 二.Spring作用域 二.Bean原理分析 执行流程 Bean的生命周期 一.lombok的安装与使用 lombok插件可以提供给我们一些注释,这些注释可以很 ...

  8. Bean 作用域和生命周期

    目录 1.作用域定义 Bean 的作用域 Bean 的 6 种作用域 单例作用域(singleton)和全局作用域(application)区别 2.设置作用域 3.Bean 原理分析 3.1 Bea ...

  9. Spring:been的生命周期

    参考:https://blog.csdn.net/w_linux/article/details/80086950 在IoC容器启动之后,并不会马上就实例化相应的bean,此时容器仅仅拥有所有对象的B ...

最新文章

  1. 有耐心就能学好Linux
  2. PHP 学习 一 基础
  3. 集群故障处理之处理思路以及听诊三板斧(三十四)
  4. 哪个更好的选择:克隆或复制构造函数?
  5. 传统存储做到极致也惊人!看宏杉科技发布的CloudSAN
  6. P2617 Dynamic Rankings(主席树+树状数组)
  7. 分层结构、协议、接口、服务
  8. 计算机设备耗材管理系统,实验室耗材管理方法、系统、计算机设备和存储介质与流程...
  9. E-Prime 2.0 用了一段时间出现警告信息无法编辑实验程序
  10. 机器学习:XGBoost算法
  11. sql compare mysql版本_SQL Compare 13免费版
  12. Java对接微信支付预下单
  13. Ubuntu 编译最新LLVM套件:LLVM 16.0
  14. 想用 Google 搜索引擎吗,看这篇文章吧!!!
  15. 少儿编程培训 python
  16. Win10 WiFi连接不上,如何重新配置DNS地址
  17. 手机项目人力投入评估
  18. 【转载】Visual Studio 2017各版本安装包离线下载、安装全解析
  19. DNS故障分析【转】
  20. 河北钢铁的数字化雄心

热门文章

  1. 前端学习(1031):jquery多库共存
  2. 前端学习(601):集成react插件
  3. 第四十期:九个对Web开发者最有用的Python包,掌握这些,工资至少能涨涨
  4. JAVA翻译官_Java开发笔记(三)Java帝国的特种官吏
  5. vue.js 引用背景图 background 无效的3种解决办法
  6. CSS之两栏固定布局(二)
  7. java常用jar_常用jar包含义
  8. mysql格式分隔符row_MySQLRow格式Binlog的解析(1)
  9. android无感刷新下拉分页,GitHub - TakWolf/Android-RefreshAndLoadMore-Demo: 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。...
  10. 数据结构之中缀表达式实现计算器