`

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

    spring-framework-3.2.18 编译无误源码

    spring-framework-3.2.18.RELEASE-Gradle编译无误-可直接导入eclipse查看。已使用Gradle编译成eclipse项目的spring源码,版本是3.2.18。可以直接导入eclipse中,导入法方法可参看:...

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

    spring6pdf详细讲解

    Spring 详细讲解 Spring 是一个功能强大且功能齐全的 Java 应用程序框架,提供了一个通用的基础结构来支持开发企业级应用程序。 Spring 框架的核心是控制反转(IoC)和依赖注入(DI)模式,它们使得应用程序更加...

    基于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 + ...

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

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

    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框架的出色架构和设计思想,还能从...

Global site tag (gtag.js) - Google Analytics