提起Spring,就会想到企业级框架这个词

  企业级系统:

    1.大规模:用户数量多,数据规模庞大,数据众多

    2.性能和安全性要求更高

    3.业务复杂

    4.灵活应变

我觉得先了解一下Spring的地位和他的作者比较好

Spring 的作者:Rod Johnson

 他是SpringFramework创始人,interface21 CEO

  丰富的C/C++背景,丰富的金融行业背景

  1996年开始关注java服务器端技术

  2002年著写《Expoert one-on-oneJ2EE设计与开发》,改变了Java世界

  技术主张以实用为本,音乐学博士

接下来讲讲Spring的内容,放俩张图片

Spring 的官网

官网:Spring.io

Spring的核心IOC和AOP(本处详解IOC)

  IOC:控制反转:(Inverse Of Control)
      控制反转(Inversion of Control),是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心,beans。
      理解一:将组件对象(业务对象)的控制权从代码本身转移到外部容器()
      理解二:IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器(spring容器)控制,实际就是你在xml文件控制,侧重于原理。

  AOP:面向切面编程;  (Aspect Oritend Programming)

  提及一下对象间的关系把

由于在此我使用 的meven  所以在此 我提供一下我的jar包

<!--单元测试的依赖  ctrl+shif+/-->

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.12</version>

            <scope>test</scope>

           </dependency>

        <!--Spring-->

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-beans</artifactId>

            <version>4.2.0.RELEASE</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context</artifactId>

            <version>4.2.0.RELEASE</version>

        </dependency>

        <!--aop使用的jar-->

        <dependency>

            <groupId> org.aspectj</groupId >

            <artifactId> aspectjweaver</artifactId >

            <version> 1.8.7</version>

        </dependency>    

2.一个普通类

 package cn.dawn.day01.service;
public class DawnService { private String workInfo;
private Integer age;
public void work(){
System.out.println("info"+workInfo);
} @Override
public String toString() {
return "DawnService{" +
"workInfo='" + workInfo + '\'' +
", age=" + age +
'}';
} public String getWorkInfo() {
return workInfo;
} public void setWorkInfo(String workInfo) {
this.workInfo = workInfo;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}

   3.大配置文件

 <?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="service" class="cn.dawn.day01.service.DawnService">
<property name="workInfo" value="第一个Spring程序"></property>
<property name="age" value="12"></property>
</bean>
</beans>

  4.单测

 package cn.dawn.day01;

 import cn.dawn.day01.service.DawnService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by Dawn on 2018/3/3.
*/public class test20180303 {
@Test
/*入门案例*/
public void t01(){
ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext01.xml");
DawnService service = (DawnService) context.getBean("service");
System.out.println(service);
}
}

在没有new 的情况下,就拿到了他的实现

ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext01.xml");

  还记得我提了的IOC吗?我不是说他把创建对象的控制权交给了Spring容器嘛,那么容器在什么时候创建对象呢,是getBean的时候吗?还是。。。。(小实验)

    在刚才的那个普通类中,添加一个构造,如下

  public DawnService(){

   System.out.println("========================DawnService创建=======================");

   }

 运行结果:

结论就是Spring容器初始化的时候就把bean中的对象实例化了

Spring 入门base的更多相关文章

  1. Spring入门(二):自动化装配bean

    Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中需要创建的bean. 自动装配(autowiring):Spring会自动 ...

  2. Spring入门详细教程(四)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  3. Spring入门学习(一)

    SpringMVC基础平台补充(2016.03.03) 如果想要开发SpringMVC,那么前期依次安装好:JDK(jdk-8u74-windows-x64,安装后配置环境变量JAVA_HOME和CL ...

  4. Spring入门(10)-Spring JDBC

    Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...

  5. Spring入门(9)-AOP初探

    Spring入门(9)-AOP初探 0. 目录 什么是面向切面编程 AOP常见术语 AOP实例 参考资料 1. 什么是面向切面编程 Aspect Oriented Programming(AOP),即 ...

  6. Spring入门(8)-基于Java配置而不是XML

    Spring入门(8)-基于Java配置而不是XML 本文介绍如何应用Java配置而不是通过XML配置Spring. 0. 目录 声明一个简单Bean 声明一个复杂Bean 1. 声明一个简单Bean ...

  7. Spring入门(7)-自动检测Bean

    Spring入门(7)-自动检测Bean 本文介绍如何自动检测Bean. 0. 目录 使用component-scan自动扫描 为自动检测标注Bean 1. 使用component-scan自动扫描 ...

  8. Spring入门(6)-使用注解装配

    Spring入门(6)-使用注解装配 本文介绍如何使用注解装配. 0. 目录 使用Autowired 可选的自动装配 使用Qualifier选择 1. 使用Autowired package com. ...

  9. Spring入门(5)-自动装配Bean属性

    Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...

随机推荐

  1. 【BZOJ2298】[HAOI2011]problem a DP

    [BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相 ...

  2. 关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了

    关东升的<iOS实战:图形图像.动画和多媒体卷(Swift版)>上市了 承蒙广大读者的厚爱我的<iOS实战:图形图像.动画和多媒体卷(Swift版)>京东上市了,欢迎广大读者提 ...

  3. 巨蟒python全栈开发flask1

    1.整体把握 (1)路飞学城 - RestAPI 前后端分离开发 Django Vue.js - DRF DjangoRestFromwork - 线上商城的经验 (2)智能玩具 - RestAPI ...

  4. 巨蟒django之CRM5 学习记录&&课程记录&&班级管理&&私户的数量上限

    1.公户变私户(事务+行级锁) 2.私户的数量上限 3.班级的管理 4.课程记录管理 5.学习记录的初始化 6.展示和编辑学习记录

  5. Nginx服务监听端口修改启动bug

    监听的端口从80 修改到其他端口出现启动不起来问题. 解决方案如下: yum install policycoreutils-python sudo cat /var/log/audit/audit. ...

  6. MySQL 第四天

    回顾 列属性: 主键, 自增长, 唯一键     关系: 一对一,一对多和多对多 范式: 三层范式 1NF: 字段设计必须符合原子性 2NF: 不存在部分依赖(没有复合主键) 3NF: 不存在传递依赖 ...

  7. KindEditor 4.1.11最新版 网站实例 包含使用方法 下载地址

    KindEditor是非常好的富媒体文本编辑系统,短小精悍,可惜网上找到的都是有各种问题!一怒之下,我自己进行了修改和配置,搞成了一个网站示例.下载解压后,可以直接运行!!完全无问题.! Kinded ...

  8. ggplot2画图时标题无法居中的问题

    折腾了一天,终于好了.应该是版本的问题.在R3.2.2能居中(别问我为什么知道),在R3.3.2上就不能.解决方式如下: library(ggplot2) ggplot(data=mtcars, ae ...

  9. Ajax知识

    一.Ajax介绍前戏 1.json介绍 1.什么是json? json(JavaScript Object Notation,JS对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript ...

  10. Windows.old

    如果通过执行自定义安装来安装 Windows 7,而没有在安装过程中格式化分区,则以前版本的 Windows中使用的文件存储在 Windows.old文件夹中.此文件夹中文件的类型取决于您的电脑.使用 ...