一、Spring名词

侵入式设计(struts)

引入了框架则对现有的类的结构产生影响,例如Action类需要实现ActionSupport类。

非侵入式设计

  与上相反。

1、IOC(inversion on control)      控制反转

2、依赖注入

处理对象的依赖关系。

3、AOP 面向切面编程

切面简单的理解就是一个类,由许多重复的代码形成的类。

举例:事物、日志、权限

二、Spring框架

2.1概述

  

  Spring框架:可以解决对象的创建以及对象之间依赖关系的一种框架。并且还可以和其他框架一起使用。Spring与Struts,Spring与hibernate;所以说Spring起到了框架整合的作用。

2.2六大模块

  Spring提供了一站式解决方案。

1)Spring Core  spring的核心功能:IOC容器,解决对象创界以及对象之间的依赖关系。

2)Spring Web  spring 对web模块的支持。

→可以和Struts整合,让Struts的Action创建交给spring

→springmvc模式

3)Spring DAO   对jdbc操作的支持

4)Spring ORM  对orm的支持表现在:

→可以与Hibernate整合

→也可以使用Spring对Hibernate操作的封装

5)Spring AOP         切面编程(难点)

6)SpringEE      Spring对javaEE其他模块的支持。

2.3开发步骤

1)下载源码

2)引入jar包

3)查看API,编写代码

2.4 bean创建细节

1、对象创建:单例/多例

Scope = “singleton”,单例,默认值

Scope =”prototype”多例的

2、什么时候创建?

Scope =”prototype”用到的时候才创建

Scope = “singleton”启动的时候创建

3、是否延迟创建

  Lazy-init=”false” 默认值为false,即不延迟创建,在启动的时候创建

  Lazy-init=”true”  延迟初始化,在用到的时候才初始化。

三  SpringIOC容器

3.1  创建对象

IOC容器创建对象:

  创建对象的几种方式:

    (1)调用无参数构造器

    (2)调用有参数构造器

    (3)工厂创建对象

        工厂类,静态方法创建对象(类名.方法())

        工厂类,非静态方法创建对象(实例化对象.方法)

bean.xml

<?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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- ###############对象创建############### --><!-- 1. 默认无参数构造器 <bean id="user1" class="cn.itcast.b_create_obj.User"></bean>--><!-- 2. 带参数构造器 --><bean id="user2" class="cn.itcast.b_create_obj.User"><constructor-arg index="0" type="int" value="100"></constructor-arg><constructor-arg index="1" type="java.lang.String" value="Jack"></constructor-arg></bean><!-- 定义一个字符串,值是"Jack" ;  String s = new String("jack")--><bean id="str" class="java.lang.String"><constructor-arg value="Jacks"></constructor-arg></bean><bean id="user3" class="cn.itcast.b_create_obj.User"><constructor-arg index="0" type="int" value="100"></constructor-arg><constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg></bean><!-- 3. 工厂类创建对象 --><!-- # 3.1 工厂类,实例方法 --><!-- 先创建工厂 --><bean id="factory" class="cn.itcast.b_create_obj.ObjectFactory"></bean><!-- 在创建user对象,用factory方的实例方法 --><bean id="user4" factory-bean="factory" factory-method="getInstance"></bean><!-- # 3.2 工厂类: 静态方法 --><!-- class 指定的就是工厂类型factory-method  一定是工厂里面的“静态方法”--><bean id="user" class="cn.itcast.b_create_obj.ObjectFactory" factory-method="getStaticInstance"></bean></beans>      

View Code

3.2  对象的依赖关系

Spring中如何给对象的属性赋值呢?

      1) 通过构造函数

2) 通过set方法给属性注入值

3) p名称空间

4)自动装配(了解)

5) 注解

1、常用:set方法注入值

<!-- dao instance --><bean id="userDao" class="cn.itcast.c_property.UserDao"></bean><!-- service instance --><bean id="userService" class="cn.itcast.c_property.UserService"><property name="userDao" ref="userDao"></property></bean><!-- action instance --><bean id="userAction" class="cn.itcast.c_property.UserAction"><property name="userService" ref="userService"></property></bean>

2、内部bean

<!-- ##############内部bean############## --><bean id="userAction" class="cn.itcast.c_property.UserAction"><property name="userService"><bean class="cn.itcast.c_property.UserService"><property name="userDao"><bean class="cn.itcast.c_property.UserDao"></bean></property></bean></property></bean>

3、p名称空间注入属性值

<?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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- ###############对象属性赋值############### --><!-- 给对象属性注入值:# p 名称空间给对象的属性注入值(spring3.0以上版本才支持)--><bean id="userDao" class="cn.itcast.c_property.UserDao"></bean><bean id="userService" class="cn.itcast.c_property.UserService" p:userDao-ref="userDao"></bean><bean id="userAction" class="cn.itcast.c_property.UserAction" p:userService-ref="userService"></bean><!-- 传统的注入: <bean id="user" class="cn.itcast.c_property.User" ><property name="name" value="xxx"></property></bean>--><!-- p名称空间优化后 --><bean id="user" class="cn.itcast.c_property.User" p:name="Jack0001"></bean></beans>   

4、自动装配:Spring提供的自动装配主要是为了简化配置; 但是不利于后期的维护。不推荐使用

根据名称自动装配:autowire="byName"

  

<!-- ###############自动装配############### -->  <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean>    <bean id="userService" class="cn.itcast.d_auto.UserService" autowire="byName"></bean><!-- 根据“名称”自动装配: userAction注入的属性,会去ioc容器中自动查找与属性同名的对象 --><bean id="userAction"
class="cn.itcast.d_auto.UserAction" autowire="byName"></bean>

根据类型自动装配:autowire="byType"

  必须确保IOC容器中同类型的对象只有一个。否则报错,因为电脑此时不知道调用哪一个。

<?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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd" default-autowire="byType"><!--定义到全局不用每个节点都写了--><!-- ###############自动装配############### -->  <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean>    <bean id="userService" class="cn.itcast.d_auto.UserService"></bean><!-- 如果根据类型自动装配: 必须确保IOC容器中只有一个该类型的对象 --><bean id="userAction" class="cn.itcast.d_auto.UserAction"></bean><!--   报错: 因为上面已经有一个该类型的对象,且使用了根据类型自动装配<bean id="userService_test" class="cn.itcast.d_auto.UserService" autowire="byType"></bean>-->
</beans>  

5、注解:方式可以简化spring的IOC容器的配置!

使用注解步骤:

1)先引入context名称空间

xmlns:context="http://www.springframework.org/schema/context"

2)开启注解扫描

<context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan>

 3)使用注解

通过注解的方式,把对象加入ioc容器。

创建对象以及处理对象依赖关系,相关的注解:

@Component   指定把一个对象加入IOC容器

@Repository   作用同@Component; 在持久层使用

@Service      作用同@Component; 在业务逻辑层使用

@Controller    作用同@Component; 在控制层使用

@Resource     属性注入

总结:

1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI)
         2) 注解可以和XML配置一起使用。

四  Spring与struts的整合

【SSH整合:

Spring与Struts

关键点: 让struts框架的action对象的创建交给spring!

Spring与Hibernate

关键点: sessionFactory对象的创建交给spring!

步骤:

1、引入jar包

   1)引入struts .jar相关文件

2)spring-core  相关jar文件

3)spring-web 支持jar包

spring-web-3.2.5.RELEASE.jar         【Spring源码】

        struts2-spring-plugin-2.3.4.1.jar      【Struts源码】

2、配置XML

  struts.xml                  【struts路径与action映射配置】

  bean.xml                  【spring ioc容器配置】

  web.xml

               【核心过滤器: 引入struts功能】

               【初始化spring的ioc容器】

3、 代码以及配置

转载于:https://www.cnblogs.com/h-g-f-s123/p/6404572.html

Spring入门(1)相关推荐

  1. IDEA下——Spring入门程序

    创建一个Maven的项目,我的项目结构如下: 在pom文件里写下需要导入的依赖: <?xml version="1.0" encoding="UTF-8" ...

  2. spring入门详细教程(五)

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

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

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

  4. Spring入门详细教程(三)

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

  5. Spring入门详细教程(二)

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

  6. Spring入门介绍:

    Spring入门介绍 Spring诞生: 创建Spring的目的就是用来替代更加重量级的的企业级Java技术 简化Java的开发 基于POJO轻量级和最小侵入式开发 通过依赖注入和面向接口实现松耦合 ...

  7. Spring入门5.事务管理机制

    Spring入门5.事务管理机制 20131126 代码下载 : 链接: http://pan.baidu.com/s/1kYc6c 密码: 233t 回顾之前的知识,Spring 最为核心的两个部分 ...

  8. “Spring入门”教程系列

    大家好, 我很高兴向您介绍"Spring入门"教程系列! 这是一系列文章,最初由我们的JCG合作伙伴 Michal Vrtiak在vrtoonjava博客上撰写 . 本系列中将逐步 ...

  9. Spring入门与常用配置

    什么是Spring Spring:SE/EE开发的一站式框架. 一站式框架:有EE开发的每一层解决方案.  WEB层 :SpringMVC   Service层 :Spring的Bean管理,Spri ...

  10. Spring入门示例及相关概念介绍

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Spri ...

最新文章

  1. 英特尔媒体年会场景(15P)——实拍与小结
  2. codevs——1294 全排列
  3. 软件工程-GoldPoint游戏
  4. html固定table表头的实现思路
  5. c++语言标准 pdf,C++14标准.pdf
  6. Java知识系统回顾整理01基础04操作符05赋值操作符
  7. 使用ssh tunnel 来做代理或跳板
  8. 清北学堂----北京集训
  9. python 内建函数basestring笔记
  10. Delphi多线程详解CreateThread、TThread,以及线程间通过临界区(CriticalSection)实现同步
  11. hp laserjet 1213 linux驱动下载,惠普HP LaserJet Pro M1213nf一体机驱动
  12. Access更新查询(更新员工姓名)
  13. VMware ESXI 5.5 注册码
  14. 单播、组播(目标广播、多播)、广播、泛洪、洪泛介绍与比较
  15. INSERT IGNORE INTO 与 INSERT INTO
  16. 低代码:阿里“云钉一体”战略的延伸和深化
  17. 15高级链接构建策略和技巧,以提高您的SEO
  18. Redis在多线程高并发下出现数据错乱问题
  19. 移动桌面到其他盘:C盘不够用,如何【修改桌面存储位置】
  20. openstack victoria 对接华为存储OceanStor 5110 v5(Kunpeng)

热门文章

  1. maven插件开发(二)
  2. 推特警告称开发者 API 密钥或遭泄露
  3. 蚂蚁金服开源服务注册中心 SOFARegistry
  4. 记一次open-falcon手动push数据
  5. Android阅读手札:第一行代码(第一章)
  6. 优秀的程序员都应当知道的11个警句
  7. SQLServer 维护脚本分享(05)内存(Memory)
  8. HTLM5 小知识点的汇集
  9. 一步一步手绘Spring MVC运行时序图(Spring MVC原理)
  10. [Java] 蓝桥杯ALGO-39 算法训练 数组排序去重