一:

1. Spring几大核心功能:

  IOC/DI 控制反转/依赖注入

  AOP 面向切面编程

  声明式事务

2. Spring 框架的的runtime

  2.1 test:Spring提供测试功能

  2.2 Core Container:核心容器。Spring启动最基本条件

    2.2.1 Beans:Spring负责创建类对象并管理对象

    2.2.2 Core:核心类

    2.2.3 Context:上下文参数。获取外部资源或管理注解等

    2.2.4 SpEL:experssion.jar

  2.3 AOP:实现aop功能需要依赖

  2.4 Aspects:切面AOP依赖的包

  2.5 Data Access/Integration:Spring 封装数据访问层相关内容

    2.5.1 JDBC:Spring对JDBC封装之后的代码

    2.5.2 ORM:封装了持久层框架的代码。例如:Hibernate

    2.5.3 Transations:对应spring-tx.jar。声明式事务使用。

  2.6 web:当Spring完成web相关功能时需要。

3. Spring框架中重要概念

  3.1 容器(Container):Spring当做一个大容器

  3.2 BeanFactory 接口,老版本

    3.2.1 新版本中ApplicationContext接口,是BeanFactory 的子接口。BeanFactory 的功能在ApplicationContext中都有。

4.从Spring3开始把Spring框架的功能拆分为多个jar。

二:IOC

1. 中文名称:控制反转

2. 英文名称:Inversion of Control

3. IOC是什么

  3.1 IoC完成的事情原先由程序员主动通过new实例化对象事情,转交给Spring负责

  3.2 控制反转中控制指的是:控制类的对象

  3.3 控制反转中反转指的是:转交给Spring负责

  3.4 IoC最大的作用:解耦

    3.4.1 程序员不需要管理对象。解除了对象管理与程序员之间的耦合。

三:

1. 导入jar包

2. 在src下新建applicationContext.xml

  2.1 文件名称和路径自定义

  2.2 记住spring容器ApplicationContext,applicationContext.xml配置的信息最终存储到了ApplicationContext容器中

  2.3 Spring的配置文件基于schema(.xsd),理解为dtd的升级版,具有更好的扩展性(xmlns)

  2.4 配置文件中只需要引入基本schema

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- id 表示获取到对象标识
class 创建哪个类的对象
-->
<bean id="peo" class="com.bjut.pojo.People"/>
</beans>

    2.4.1 通过<bean/> 创建对象

    2.4.2 默认配置文件被加载时创建对象

三.编写测试方法

package com.bjut.text;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.bjut.pojo.People; public class Text
{
public static void main(String[] args)
{
// People peo = new People();
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
People people = ac.getBean("peo",People.class);
System.out.println(people);
}
}

  1.1 getBean(“<bean>标签ID值”,返回值类型);

    如果没有第二个参数,默认是Object

  1.2 getBeanDefinitionNames(),spring 容器中目前所管理的所有对象

四.Spring创建对象的三种方法:

1. 通过构造方法创建

  1.1 无参构造创建:默认情况

  1.2 有参构造创建:需要明确配置

    1.2.1 需要在类中提供有参构造方法

    1.2.2 在 applicationContext.xml 中设置调用哪个构造方法创建对象

      1.2.2.1 如果设定的条件匹配多个构造方法执行最后的构造方法

      1.2.2.2 index : 参数的索引,从 0 开始

      1.2.2.3 name: 参数名

      1.2.2.4 type:类型(区分开关键字和封装类 int 和 Integer)

<bean id="peo" class="com.bjsxt.pojo.People">
<!-- ref 引用另一个 bean value 基本数据类型或String 等 -->
<constructor-arg index="0" name="id" type="int"
value="123"></constructor-arg>
<constructor-arg index="1" name="name"
type="java.lang.String" value="张三
"></constructor-arg>
</bean>

2. 实例工厂

  2.1 工厂设计模式:帮助创建类对象.一个工厂可以生产多个对象.

  2.2 实例工厂:需要先创建工厂,才能生产对象

  2.3 实现步骤:

    2.3.1 必须要有一个实例工厂

public class PeopleFactory 
{
  public People newInstance()
  {
    return new People(1,"测试");
  }
}

    2.3.2 在 applicationContext.xml 中配置工厂对象和需要创建的对象

<bean id="factory"
class="com.bjsxt.pojo.PeopleFactory"></bean>
<bean id="peo1" factory-bean="factory"
factory-method="newInstance"></bean>

3. 静态工厂

  3.1 不需要创建工厂,快速创建对象. 3.2 实现步骤

    3.2.1 编写一个静态工厂(在方法上添加 static)

public class PeopleFactory
{
public static People newInstance()
{
return new People(1,"测试");
}
}

    

    3.2.2 在 applicationContext.xml 中

    <bean id="peo2" class="com.bjsxt.pojo.PeopleFactory"

    factory-method="newInstance"></bean>

Java高级框架-----Spring(一)的更多相关文章

  1. Java高级框架------Spring(二)

    五.如何给Bean的属性赋值(注入) 1. 通过构造方法来赋值 2. 设置注入(通过set方法) 2.1 如果属性是基本类型或String等简单 <bean id="peo" ...

  2. 初识轻量级Java开源框架 --- Spring

    初识轻量级Java开源框架 --- Spring 作者:egg 微博:http://weibo.com/xtfggef 出处:http://blog.csdn.net/zhangerqing spri ...

  3. java DI 框架spring(web)、Guice(web)、Dagger&Dagger2(android)

    java DI 框架spring(web).Guice(web).Dagger&Dagger2(android) (待续...)

  4. Java之框架Spring(一)

    1. Spring是什么? Spring是一个开源框架 Spring为简化企业级应用而生.可以实现以前只有EJB才能实现的功能 Spring是一个IOC(DI)和AOP容器框架 具体描述:轻量级:Sp ...

  5. Java 高级框架——Mybatis(一)

    一, SQl复习 a,数据库SQL命令 创建数据库并指定编码 Create database 数据库名 default character set utf8 create database ssm d ...

  6. Java日志框架-Spring中使用Logback(Spring/Spring MVC)

    继上一篇文章http://www.cnblogs.com/EasonJim/p/7800880.html中所集成的是基于Java的普通项目,如果要在Spring和Spring MVC上集成,需要做如下 ...

  7. Java高级框架——Mybatis(二)

    十.三种查询方式 1. selectList()返回值为List<resultType属性控制> 1.1 适用于查询结果都需要遍历的需求 List<Flower> list = ...

  8. Java后端框架之Spring Boot详解,文末有Java分布式实战项目视频可取

    在 Java 后端框架繁荣的今天,Spring 框架无疑是最最火热,也是必不可少的开源框架,更是稳坐 Java 后端框架的龙头老大. 用过 Spring 框架的都知道 Spring 能流行是因为它的两 ...

  9. atititt.java定时任务框架选型Spring Quartz 注解总结

    atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...

随机推荐

  1. 04bootstrap_表单

    03bootstrap_表单 表单的基本实例 1.默认表单:form 表单域 fieldset legend label 提示span class="help-block" 2.基 ...

  2. post表单翻页保存搜索条件

    问题:搜索条件下的数据,进行翻页行为后,搜索条件丢失 1.搜索表单 2.翻页 解决:既然点击页面跳转的a标签使用的方法是GET,而点击“搜索”按钮使用的方法是POST,那么可以让点击a标签实际上就是提 ...

  3. Go学习之初出茅庐

    在一个月黑风高的夜晚,机缘巧合与Go语言一面之缘,被她的简洁.灵活.高效所吸引,让我有深入学习的冲动,现在开始我的成长之路吧.

  4. 兄弟连学python---网络简介

    网络简介 1.什么是网络 网络是辅助双方能够连接在一起的工具 使用网络的目的 为了联通多方然后进行通讯,能够让软件在不同的电脑上运行,相互传输数据 网络的发展 网络协议 什么是协议 约定俗成的,没有理 ...

  5. vba data to input tool

    public Sub InserDb() dim maxrow as integer dim maxcol as integer dim ddl as string dim recode as str ...

  6. 渗透测试学习 九、 MSsql注入上

    MSsql注入漏洞详解 (Asp.Aspx站,常见于棋牌网站.考试网站.大学网站.政府网站.游戏网站.OA办公系统) 大纲:msSQL数据库调用分析 msSQL注入原理 msSQL注入另类玩法 msS ...

  7. 【开发】iOS入门 - XCode快捷键

    XCode使用第一天,从熟悉快捷键开始... 搜索相关的快捷键: 搜文件.类和方法 - Command + Shift + O 搜字符串 - Command + Shift + F 定位文件 - Co ...

  8. Javascript 4.3 事件处理函数

    鼠标指针悬停在某个元素上时触发一个动作:onmouseover事件处理函数 鼠标指针离开某个元素时触发一个动作:onmouseout事件处理函数 点击某个链接时触发一个动作:onclick事件处理函数 ...

  9. Yii2 设计模式——Yii2 中用到哪些设计模式?

    Yii 2 设计模式“包含了两个方面的内容:1. 设计模式,2. Yii 2 框架. <设计模式>一书虽然以JAVA语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语言,而是在 ...

  10. redis 设置分布式锁要避免死锁

    1. jedis 中 setnx key value 虽然可以处理同步问题 (setnx 有返回值 1是key不存在把它设置进去,0是key已经存在了)但是 setnx设置完后 程序的下一步 有可能挂 ...