`

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.net中文手册在线版

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...

    spring源码合集spring源码合集

    spring

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

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

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

    spring源码分析(1-10)

    Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...

    spring3.0.0相关jar包

    spring3.0.0相关jar包 org.springframework.aop-3.0.0.RELEASE org.springframework.asm-3.0.0.RELEASE org.springframework.aspects-3.0.0.RELEASE org.springframework.beans-3.0.0.RELEASE org.springframework....

    SpringBoot+SpringCloud面试题.doc

    Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注...

    spring-mock.jar

    Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi.SimpleNamingContext.class org.springframework.mock.jndi....

    开发工具 spring-aop-4.3.6.RELEASE

    开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...

    spring 3.2.4.RELEASE jar包

    spring 3.2.4 Realease 的所有jar包: spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-...

    spring4.3.1官方全套jar包下载

    spring4.3.1全套jar下载。 4.3.1/spring-aop-4.3.1.RELEASE.jar 4.3.1/spring-aspects-4.3.1.RELEASE.jar 4.3.1/spring-beans-4.3.1.RELEASE.jar 4.3.1/spring-context-4.3.1.RELEASE.jar 4.3.1/spring-core-4.3.1....

    基于spring cloud 和vue全家桶的开源电商源码

    基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的...

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分)

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分) 《Spring技术内幕:深入解析Spring架构与设计原理》是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔!Java开发者社区和Spring...

    Spring in Action 中文版 第五部分(Spring in Action CN.005)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;Spring in Action CN.006&lt;br&gt;Spring in Action CN.007&lt;br&gt;Spring in ...

    org.spring-framework-3.0.4. 所有jar

    org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....

    尚硅谷SpringCloud第2季2020版.mmap

    一篇很好的springCloud学习的思维导读,详细的介绍了,springCloud的搭建步骤以及各组件的说明讲解 涵盖 Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign...

    spring cloud 体系版本选型,涉及spring cloud alibaba spring boot spring cloud

    spring boot , spring cloud alibaba, spring cloub 版本选型

    Spring从入门到精通 源码

    本书由浅入深,循序渐进地介绍了Spring的体系结构和相关知识点,目的是帮助初学者快速掌握Spring,并能使用Spring进行应用程序的开发。本书最大的特色在于每章都是由浅入深,从一个简单的示例入手,让读者快速了解本...

Global site tag (gtag.js) - Google Analytics