`

Spring

阅读更多



 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框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    java *spring工具类 方便在非spring管理环境中获取bean

    java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...

    Spring Integration + Spring WS 整合

    Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...

    spring3.0.5 所有jar文件

    包含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...

    SpringBatch+Spring+Mybatis+MySql (spring batch 使用jar)

    Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...

    spring2.0升级到spring3.0.5的开发包

    Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...

    Spring Boot整合Spring Batch,实现批处理

    在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...

    spring3.1 官方全部jar包

    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 MVC 入门实例

    这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...

    Getting started with Spring Framework: covers Spring 5(epub)

    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 权限管理系统

    介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...

    Spring cloud与Spring boot 集成完整案例

    Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...

    spring-ai-core 0.8.1

    《Spring AI Core 0.8.1:开启人工智能之旅》 在现代软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java开发中的首选框架之一。而Spring AI Core则是Spring生态系统中专门为人工智能(AI)和机器学习...

    Spring技术内幕:深入解析Spring架构与设计原理

    《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...

    spring 4.3.14(全)最新的spring4正式版

    Spring 框架是 Java 开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。Spring 4.3.14 是该框架的最后一个4.x系列正式版,发布于2018年2月24日。这个版本在Spring 5.0发布之前提供了一个...

    spring整合rabbitmq需要的jar包(spring版本4.2.0)

    在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务来简化企业级应用的构建。RabbitMQ则是一个流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地...

    SpringCloud项目实战各组件源代码案例

    Spring Cloud系列教程 Spring Boot Spring Cloud Stream 和 Kafka案例教程 springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud ...

Global site tag (gtag.js) - Google Analytics