关键词:
一、Spring配置的方式
spring容器用来创建应用程序中的bean,并通过DI来协调这些对象间的关系。
在bean进行装配时,spring提供了三种主要的装配机制。
①在XML中进行显式配置
②在Java中进行显式配置
③隐式的bean发现机制和自动装配
二、自动化装配bean
1、spring从两个角度来实现自动化装配
①组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean
②自动装配(autowiring):Spring自动满足bean之间的依赖
示例:
①:定义一个接口
package soundsystem; public interface CompactDisc { void play(); }
②创建实现类,并且加自动扫描的标签@Component,该标签会告知spring为这个类创建bean。
1 package soundsystem; 2 3 import org.springframework.stereotype.Component; 4 5 @Component 6 public class SgtPeppers implements CompactDisc { 7 8 public void play() { 9 System.out.println("继承接口!"); 10 } 11 12 }
③组件扫描默认是不启动的,我们需要显示的配置Spring。让它去寻找带有@Component注解的类,并为其创建bean。
方式一:Java代码启用组件扫描。
如果没有其他的配置,@ComponentScan默认会扫描与配置类相同的包,及其报下,所有子包。
package soundsystem; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan public class CDPlayerConfig { }
方式二:通过XML配置来启用组件扫描。
<context:component-scan base-package="soundsystem"/>
④:测试组件扫描能够发现CompactDisc
package test; import java.util.Date; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import soundsystem.CDPlayerConfig; import soundsystem.SgtPeppers; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=CDPlayerConfig.class) public class TEST { @Autowired private SgtPeppers sgtPeppers; @Test public void cdshouNotNull(){ System.out.println("null"); } }
2、为组件扫描的bean命名
Spring会自动将类名的第一个字母小写,作为相应bean的名字。
如果想要,自己为bean命名,则如下:
@Component("MyCd") public class SgtPeppers implements CompactDisc { public void play() { System.out.println("继承接口!"); }
3、设置组件扫描的基础包
@ComponentScan没有任何属性,它会以本包为基础包,来扫描组件
①:@ComponentScan("包名")
@ComponentScan(basePackages="包名")
@ComponentScan(basePackages={"包名1","包名2",....})
以上的包名为String类型,是类型不安全的。
②:@ComponentScan(basePackageClasses={bao1.class,bao2.class})
通过这种方式,这些类所在的包会作为组件扫描的基础包。
在使用这种方式时,可以在包中创建一个用来扫描的空标记接口。
三、Java代码装配bean
1、创建配置类,使用@Configuration标记。
package soundsystem; import org.springframework.context.annotation.Configuration; @Configuration public class CDPlayerConfig { }
2、声明bean,使用@Bean标记
@Bean会告诉Spring这个方法将会返回一个对象,该对象要注册为Spring应用上下文中的bean。
默认情况下,bean的ID是和带@Bean的方法名是一样的,在下例中,bean的名字是sgtPepper。
若想自己设置bean的名字,可以通过@Bean的name属性:@Bean(name="xxxx")
package soundsystem; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class CDPlayerConfig { @Bean public CompactDisc sgtPepper(){ return new SgtPeppers(); } }
3、借助JavaConfig实现注入
Spring将会拦截所有对添加了@Bean标记的方法的调用,确保添加@Bean的方法只调用一次。
使用@Bean标记的方法,可以使用任何的java方式来产生bean。
四:XML配置bean。
五:导入和混合配置
1、JavaConfig中引用XML配置
①一个JavaConfig引用另一个JavaConfig,使用@Import(xxx.class)/@Import({xxx.class,yyy.class})
②一个JavaConfig引用XML配置,使用@ImportResource("classpath:xxx.xml")
2、XML配置中引用JavaConfig
应用<bean>标签,将JavaConfig引入即可
<bean class="soundsystem.CDConfig">
spring实战笔记:spring核心
springcore一.简介: 1.依赖注入(DI) 优点:解耦 Spring通过应用上下文(ApplicationContext)装载bean的定义,并把它们组装起来。 Spring应用上下文负责对象的创建和组装。 &n... 查看详情
spring实战笔记:spring集成
...是客户端应用和服务端之间的会话。 1.Spring通过多种远程调用技术支持RPC(remoteprocedurecall,远程过程调用)RPC模型使用场景RMI不考虑网络限制时(例如防火墙),访问/发布基于Java的服务Hessian或Burlap考虑网络限... 查看详情
spring4实战学习笔记
《Spring4实战第4版》2016年4月新出版的,之前的第三版看起来还是不错的,所以看到新版就直接买下来。英文版源码地址:SpringinAction,FourthEditionCoversSpring4 1.IOC装配Bean参考【Spring实战4 2.2】,作者提倡无XML配置化... 查看详情
spring实战笔记:web中的spring
一.构建SpringWeb应用1.SpringMVC中用户请求处理 上图展示了请求使用SpringMVC所经历的所有站点。 1:在请求离开浏览器时,会带有所有请求内容的信息,至少会包含请求的URL。 请求通过Spring的Di... 查看详情
spring实战笔记一
1、是什么? Spring是一个开源的框架,是为了解决企业级应用开发的复杂性而创建的。 简而言之,Spring是为简化Java开发而创建的。 2、如何简化开发? 为了降低java开发的复杂性,Spring采用了4中关键策略。 ... 查看详情
spring实战笔记:后端中的spring
...用ORM工具可以节省术前行代码和大量开发时间。 Spring对ORM框架的支持提供了与这些框架的集成点以及一些附加的服务: --支持集成Spr 查看详情
spring实战读书笔记spring装配bean(代码片段)
...过Xml装配Bean借助构造器注入初始化bean设置属性混合配置Spring容器负责创建应用程序中的bean并通过DI来装配(wiring)他们。Spring有三种装配方式,三种方式可以搭配使用 (1)隐式的bean发现机制和自动装配ÿ... 查看详情
高质量spring实战学习笔记,腾讯内部学习spring首推
Spring框架已经成为Java开发人员的必备知识,而且Spring3引入了强大的新特性,例如SpEL、Spring表达式语言、loC容器的新注解以及用户急需的对REST的支持。无论你是刚刚接触Spring还是被Spring3.0的新特性所吸引,这份笔记... 查看详情
spring实战读书笔记spring之旅(代码片段)
Spring可以做很多事情,但是这个事情底层都依赖于2个核心特征:依赖注入(DI)和面向切面编程(AOP)概念:POJO:简单java对象,PlainOldJavaObject,在Spring中基本可以等同于javabean为了简化Java... 查看详情
前方高能预警!阿里大佬出品“spring实战学习笔记”震撼来袭
Spring框架已经成为Java开发人员的必备知识,而且Spring3引入了强大的新特性,例如SpEL、Spring表达式语言、loC容器的新注解以及用户急需的对REST的支持。无论你是刚刚接触Spring还是被Spring3.0的新特性所吸引,这份笔记... 查看详情
《r实战》读书笔记二
第一章 R简单介绍本章概要1安装R2理解R语言3执行R程序本章所介绍的内容概括例如以下。一个典型的数据分析步骤如图1所看到的。图1:典型数据分析步骤简而言之,现今的数据分析要求我们从多种数据源中获取数据... 查看详情
前方高能预警!阿里大佬出品“spring实战学习笔记”震撼来袭!(代码片段)
Spring框架已经成为Java开发人员的必备知识,而且Spring3引入了强大的新特性,例如SpEL、Spring表达式语言、loC容器的新注解以及用户急需的对REST的支持。无论你是刚刚接触Spring还是被Spring3.0的新特性所吸引,这份笔记... 查看详情
《spring实战》学习笔记-第二章:装配bean
2.1 Spring配置的可选方案 当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制: (1)在XML中进行显式配置。 (2)在Java中进行显式配置。 (3)隐式的bean发现机制和自动装配。 建议是... 查看详情
慕课网实战sparkstreaming实时流处理项目实战笔记二十一之铭文升级版
...V功能说明1)点击量分省排名/运营商访问占比 SparkSQL项目实战课程:通过IP就能解析到省份、城市、运营商2)浏览器访问占比/操作系统占比 Hadoop项目:userAgentDataV访问的数据库(MySQL),需要能够在公网上访问DataV测试数据CREATETABLEco... 查看详情
慕课网实战sparkstreaming实时流处理项目实战笔记二十之铭文升级版
...久发送一个请求去刷新当前的数据供展示统计慕课网当天实战课程从搜索引擎过来的点击量 数据已经在HBase中有的 自己通过Echarts整合SpringBoot 查看详情
阅读笔记《javaee企业应用实战》(第四版)第七章——spring的基本用法
Spring的定义和相关知识点Spring包括基于依赖注入的核心机制(再也不用new一个对象啦)基于AOP的声明式事物管理与多种持久层技术的整合WebMVC框架Spring的优点低侵入式设计,代码污染低独立于各种应用服务器,基于Spring框架的应... 查看详情
前方高能预警!阿里大佬出品“spring实战学习笔记”震撼来袭
Spring框架已经成为Java开发人员的必备知识,而且Spring3引入了强大的新特性,例如SpEL、Spring表达式语言、loC容器的新注解以及用户急需的对REST的支持。无论你是刚刚接触Spring还是被Spring3.0的新特性所吸引,这份笔记... 查看详情
《spring实战》学习笔记-第五章:构建springweb应用程序
5.1 SpringMVC起步5.1.1 跟踪SpringMVC的请求 每当用户在Web浏览器中点击链接或提交表单的时候,请求就开始工作了。对请求的工作描述就像是快递投送员。与邮局投递员或FedEx投送员一样,请求会将信息从一个地方带到另一个... 查看详情