1.what
1.1:管理javaBean——JavaBean的生成、关连(调用)、事务、安全性
1.2:Spring的核心是IoC,IoC的核心是容器,容器的核心是Java的反射机制。
2.Spring模块
2.1:AOP——Aspect-Oriented Programming
2.1.1:相关术语——Aspect、Joinpoint、Advice、Point cut、Instroduction、Target、Proxy、Weaving
2.1.2:配置文件书写顺序:目标对象、通知对象、关连2者、生成代理
2.1.3:应用——日志、事务
*应用中是通过代理的id来获得需要的bean的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 织入——将切面应用到目标对象并创建代理对象的过程 -->
<!-- 面包 即目标——被切入对象-->
<bean id="snoopy" class="com.lovo.bean.Dog">
</bean>
<!-- 切面——需要实现的交叉功能 -->
<!-- 牛肉 即通知——切入点执行的切面代码-->
<bean id="openMouseAdvice" class="com.lovo.advice.OpenMouseAdvice">
</bean>
<bean id="closeMouseAdvice" class="com.lovo.advice.CloseMouseAdvice">
</bean>
<!-- 刀功 即拦截器——将通知和目标相关联-->
<bean id="openMouseInterceptor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<!-- 切入点——根据正则表达式匹配在那些地方开刀 -->
<property name="pattern" value="com.lovo.bean.Dog.(bite|bark)"></property>
<!-- 以上切入点所执行的通知 -->
<property name="advice" ref="openMouseAdvice"></property><!-- 为了模块化,一个拦截器只配一个通知 -->
</bean>
<bean id="closeMouseInterceptor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="pattern" value="com.lovo.bean.Dog.bark"></property>
<property name="advice" ref="closeMouseAdvice"></property>
</bean>
<!-- 汉堡 即代理-->
<bean id="superSnoopy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="snoopy"></property>
<property name="interceptorNames">
<list>
<value>openMouseInterceptor</value>
<value>closeMouseInterceptor</value>
</list>
</property>
</bean>
</beans>
2.2:
2.
3.相关技术
3.1:工厂模式
3.2:单例、单态
3.3:xml
3.4:反射
4.spring原理
1:配置文件载入容器
2:根据配置文件生成Bean对象
3:根据配置文件注入对象——给对象赋值
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* ApplicationContext容器
*/
// ApplicationContext contxt = new FileSystemXmlApplicationContext("src/applicationContext.xml");
ClassPathXmlApplicationContext contxt = new ClassPathXmlApplicationContext("applicationContext.xml");
Boy boy = (Boy)contxt.getBean("wxb");//
System.out.println(boy.getName() + " " + boy.getAge());
contxt.destroy();
/**
* BeanFactory容器
*/
// Resource rs = new FileSystemResource("src/applicationContext.xml");//获得源文件
// BeanFactory bf = new XmlBeanFactory(rs);//【配置文件读入容器】
// Boy boy = (Boy)bf.getBean("wxb");//【通过反射机制根据配置文件生成Java对象;根据配置文件给对象值】
boy.kiss();
}
}
4.IoC(inversion of control)=DC(dependence injection)
5.Spring容器类
5.1:区别和共同点【BeanFactory——ApplicationContext】
5.1.1:所有bean延迟加载,在调用getBean()方法时产生——预加载单态bean
5.1.2:AppliactionContext的功能更多
5.1.3:ApplicationContext有更多的载入方式
5.1.
5.1.
5.2:
5.
5.
5.
5.
6.Spring特点
6.1:默认情况下Bean都是singleton
6.2:轻量——7个组建可以根据情况选择性使用;开销小;非侵入式开发
6.3:依赖注入——对象用容器产生
6.4:容器
6.5:框架
7.配置文件 appliactioncontext
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!--【设置注入方式】 -->
<beans>
<!-- 『标识对象』id的值必须是唯一的,且满足Java命名规范 ;name——可以重复,任意命名-->
<bean id="wxb" class="com.lovo.bean.Boy" singleton="false"
init-method="born" destroy-method="die">
<!--singleton——用于设置bean对象是否是单例模式,默认情况下Spring的所有bean都是单态 -->
<!--init-method,destroy-method——用于设置初始化对象和销毁对象;destroy-method标签只能在单态的时候才起作用,非单例用作用域来控制 -->
<!--init和destroy也可以由Spring的类InitializingBean, DisposableBean的方法afterPropertiesSet/destroy来实现,不用配置标签属性 -->
<!--设置对象的属性值 -->
<property name="name">
<value>韦小宝</value>
</property>
<property name="age" value="18"></property>
<!--可以用子标签也可以用属性,效果都一样 -->
<property name="myGirl">
<bean class="com.lovo.bean.CuteGirl"/><!-- 只用一次的隐式对象 -->
</property>
<!--数组和List集合都采用List标签,set集合采用set标签 -->
<property name="allWifeNames">
<list>
<value>ake</value>
<value>zr</value>
<value>sq</value>
</list>
</property>
<property name="allGirls">
<list>
<ref bean="shuanger"/>
<ref bean="jianning"/><!--引用数据类型用ref标签来接收值 -->
<value>mjp</value><!-- 基本数据类型和String都用value接收值 -->
</list>
</property>
<!-- map集合用entry标签来接受每个键值对-->
<property name="myFriends">
<map>
<entry key="1"><!--key标签的值只能是字符串 -->
<value>chn</value>
</entry>
<entry key-ref="jianning">
<ref bean="shuanger"/>
</entry>
</map>
</property>
<!-- properties集合用props标签来装填元素prop-->
<property name="myProperties">
<props>
<prop key="11">由于property都是字符串,可以直接写值</prop>
<prop key="33">好好学习</prop>
</props>
</property>
</bean>
</beans>
<!--【构造器注入方式】 -->
<beans>
<bean id="wxb" class="com.lovo.bean.Boy">
<!-- index标签用于该变量在构造器形参中的位置-->
<constructor-arg index="3">
<list>
<value>ake</value>
<value>zr</value>
<value>sq</value>
</list>
</constructor-arg>
<constructor-arg index="0" value="韦小宝"></constructor-arg>
<constructor-arg index="1" value="23"></constructor-arg>
<constructor-arg index="2" ref="shuanger"></constructor-arg>
</bean>
<bean id="wxb" class="com.lovo.bean.Boy">
<constructor-arg index="0" value="韦小宝"></constructor-arg>
<!--type用于指定某个特定的类,区分父类和之类 -->
<constructor-arg ref="shuanger" type="com.lovo.bean.CuteGirl"></constructor-arg>
<property name="age" value="18"></property>
</bean>
<bean id="shuanger" class="com.lovo.bean.CuteGirl"></bean>
<bean id="jianning" class="com.lovo.bean.RudeGirl"></bean>
</beans>
8.注入方式
8.1:设置方式
8.2:构造器方式
8.3:应用
8.3.1:很多第三方数据库只调用午餐构造器,用设置方式。
8.3.2:给属性赋值的顺序要求固定时用构造器方式。
8.3.3:要求外部无法修改对象属性值时用构造器方式。
- 大小: 12.3 KB
分享到:
相关推荐
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...
包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...
Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...
在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...
在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...
《Spring AI Core 0.8.1:开启人工智能之旅》 在现代软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java开发中的首选框架之一。而Spring AI Core则是Spring生态系统中专门为人工智能(AI)和机器学习...
《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...
Spring 框架是 Java 开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。Spring 4.3.14 是该框架的最后一个4.x系列正式版,发布于2018年2月24日。这个版本在Spring 5.0发布之前提供了一个...
在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务来简化企业级应用的构建。RabbitMQ则是一个流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地...
Spring Cloud系列教程 Spring Boot Spring Cloud Stream 和 Kafka案例教程 springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud ...
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...