一:

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. 学习笔记 Optional

    今天学习到的一种新的防止空指针的方法下面是我自己写的一个例子:节省空间,bean的get set 省略... /** * 类目 * @author 唐 * @date 2018/5/6 17:45 * ...

  2. 解决eclipse使用tomcat启动项目后访问项目404的问题

    今天启动项目的时候发现项目启动没有问题,但是一直访问不到页面,F12发现根本没有交互,百度后解决了,故记下来为以后提供方法,若有不同的解决方法,欢迎指教 1.首先要确保你的tomcat下没有项目,怎么 ...

  3. C语言-第2次作业得分

    作业链接:https://edu.cnblogs.com/campus/hljkj/CS20180的2/homework/2292 作业链接:https://edu.cnblogs.com/campu ...

  4. vba data to input tool

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

  5. libpointmatcher安装和使用

    libpointmatcher介绍: libpointmatcher is a modular library implementing the Iterative Closest Point (IC ...

  6. mininet的学习之一

    mininet命令 (1)--topo (2)--switch (3)--controller (4)--mac 内部交互命令 添加主机 添加链路 添加接口 添加IP 确定是否创建成功 用h1 pin ...

  7. asd短片数篇

    黄乙己 黄乙己是站着AK而正常的唯一的人.他身材挺高大:蜡黄脸色,眼角间时常夹着些饼干屑:一副黑色的眼镜.虽然挺正常,可是他有良好的饮食习惯,似乎十多个月都是吃的牛奶泡饭,也没有洗饭盒.他对人说话,总 ...

  8. vue.js组件传值

    组件传值有一下几种方式:父子传值(父传子,子传父),非父子传值,vuex,插槽作用域 1.父子传值: (1)父传子: 传值方:当子元素在父元素中当标签使用时,通过给子标签绑定一个自定义属性,属性值为需 ...

  9. SQL group_concat find_in_set 的使用

    SELECT p.id as pid,p.code as code,p.topic_name topic_name,p.vm_id as vm_id,GROUP_CONCAT(iso.iso_name ...

  10. 对于Linux内核执行过程的理解(基于fork、execve、schedule等函数)

    382 + 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 一.实验环境 win10 -> VMware -> Ubuntu1 ...