一:

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. Convolutional Neural Network Architectures for Matching Natural Language Sentences

    interaction  n. 互动;一起活动;合作;互相影响 capture vt.俘获;夺取;夺得;引起(注意.想像.兴趣)n.捕获;占领;捕获物;[计算机]捕捉 hence  adv. 从此;因 ...

  2. Teaching yourself programming -一个编程爱好者的碎碎念

    多数时候,个人活动的展开都源于某个具体的动机.或许你是为了可以写点小工具,解决日常生活中的一些重复劳动:或许,你心怀梦想,梦想着某一天完成一款你心目中完美的游戏:又或许是,你内心憧憬电影里的hack, ...

  3. Nopcommerce安装,应用及二次开发视频

    CSDN课程:http://edu.csdn.net/lecturer/944

  4. mysql 两张表的数据设置主外健关联删除

    image_group 主表 image 副表 alter table image add constraint fk_group_idforeign key (group_id)references ...

  5. 使用feign出现 java.lang.IllegalStateException: Service id not legal hostname

    检查spring. application.name是否使用了_

  6. Redis不支持ssl

    一直在公司内部推荐redis做cache管理,今天偶然想起虽然C#没问题,可是c/c++没查过可不可行. 结果查了一下,还真tmd有问题,官方的c client版本只支持linux side的,根本没 ...

  7. zabbix监测图形界面显示方框乱码解决方法

    思路如下:用Windows下中文字体进行替换,修改配置文件即可 详细步骤如下: 1.在Windows的控制面板里的字体中,选择一种中文字体,将该字体文件复制到桌面.例如,我选择了宋体 常规字体,复制到 ...

  8. Django之 静态模板渲染

    既可以简单的 django.http.HttpResponse 来把内容显示到网页上,也可以使用渲染模板的方法来显示内容. 说明:代码是基于 Django 1.8,但 Django 1.4 - Dja ...

  9. 捕获数据中的某个序列---verilog

    捕获数据中的某个序列---verilog 状态变化图 先是检测序列,每当接收到cmp_equal信号时跳转到下一个状态,等待另外一个cmp_equal信号到来. 代码: always @ * case ...

  10. JavaWeb数据库长时间不访问断开链接解决思路

    这几天开发的线上商超系统长时间不操作,会频繁的出现第一次登陆或者跟数据库操作有关的方法都会报500错误,很是鸡肋啊这个问题. 经过网上不断的探索,在知识的海洋里畅游了几分钟后我自己总结出一套方法,我用 ...