Java高级框架-----Spring(一)

摘要:
一:1.Spring几大核心功能:IOC/DI控制反转/依赖注入AOP面向切面编程声明式事务2.Spring框架的的runtime2.1test:Spring提供测试功能2.2CoreContainer:核心容器。Spring启动最基本条件2.2.1Beans:Spring负责创建类对象并管理对象2.2.2Core:核心类2.2.3Context:上下文参数。例如:Hibernate2.5.3Transations:对应spring-tx.jar。

一:

1.Spring几大核心功能:

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

AOP 面向切面编程

声明式事务

2.Spring 框架的的runtime

2.1testSpring提供测试功能

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

2.2.1BeansSpring负责创建类对象并管理对象

2.2.2Core:核心类

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

2.2.4SpELexperssion.jar

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

2.4Aspects:切面AOP依赖的包

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

2.5.1JDBCSpringJDBC封装之后的代码

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

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

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

Java高级框架-----Spring(一)第1张

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.1IoC完成的事情原先由程序员主动通过new实例化对象事情,转交给Spring负责

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

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

3.4IoC最大的作用:解耦

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

三:

1.导入jar

2.src下新建applicationContext.xml

2.1文件名称和路径自定义

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

2.3Spring的配置文件基于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默认配置文件被加载时创建对象

三.编写测试方法

packagecom.bjut.text;

importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;

importcom.bjut.pojo.People;


public classText
{
    public static voidmain(String[] args)
    {
//People peo = new People();
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        People people = ac.getBean("peo",People.class);
        System.out.println(people);
    }
}

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

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

1.2getBeanDefinitionNames(),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 classPeopleFactory 
{   
publicPeople newInstance()
{     
return new People(1,"测试");   } }

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

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

3.静态工厂

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

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

public classPeopleFactory 
{
    public staticPeople newInstance()
    {
        return new People(1,"测试");
    }
}    

3.2.2 applicationContext.xml

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

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

免责声明:文章转载自《Java高级框架-----Spring(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头Centos7安全加固下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

spring自动注入的三种方式

所谓spring自动注入,是指容器中的一个组件中需要用到另一个组件(例如聚合关系)时,依靠spring容器创建对象,而不是手动创建,主要有三种方式: 1. @Autowired注解——由spring提供 2. @Resource注解——由JSR-250提供 3. @Inject注解——由JSR-330提供   @Autowired注解的使用方法 @Tar...

springmvc+quartz简单实现定时调度

一、简介:Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0。 二、因为定...

spring实现定时任务的两种方式

本文为博主原创,未经允许不得转载        项目中要经常事项定时功能,在网上学习了下用spring的定时功能,基本有两种方式,在这里进行简单的总结, 以供后续参考,此篇只做简单的应用。        1.在spring-servlet.xml文件中加入task的命名空间: xmlns:task="http://www.springframework.o...

springboot启动报错

springboot启动报错信息 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of resource dependencies failed; nested excepti...

Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)

什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动web服务啊,研究了下Quartz在Spring中的动态定时,发现<bean > <property name="job...

一个 XSD 实例

一个 XSD 实例 本节会为您演示如何编写一个 XML Schema。您还将学习到编写 schema 的不同方法。 XML 文档 让我们看看这个名为 "shiporder.xml" 的 XML 文档: <?xml version="1.0" encoding="ISO-8859-1"?> <shiporder orderid="88...