Spring入门第一课:Spring基础与配置Bean
1.入门
Spring是简化java开发的一个框架,其中IoC和AOP是Spring的两个重要核心。由于Spring是非侵入性的,通过Ioc容器来管理bean的生命周期,还整合了许多其他的优秀框架,所以极大的简化了我们的开发过程。Spring的核心包括Beans、Core、Context、SpEL。对应的包的文件名形式为spring-expression-4.0.0.RELEASE.jar这样的形式。在进行Spring开发时,我们必须引入这四个核心包和一个日志包,导入Referenced Libraries中。就选择这些包,然后添加。然后新建一份Spring的配置文件。操作为添加Spring下的Spring Bean Configruation File文件。这样环境就搭建好了...
那么如何加载一个Bean呢?(这里需要了解什么是IoC和DI)
第一步:先在xml配置文件配置好bean,如下:
1 <bean id="zhao" class="com.test.demo.Person">
<property name="name" value="赵二狗"></property>
<property name="age" value="18"></property>
</bean>
第二步:创建IoC容器,加载Bean,如下:
ApplicationContext c =new ClassPathXmlApplicationContext("context.xml");
Person zhao = (Person) c.getBean("zhao");
System.out.println(zhao.toString());
2.IOC&DI概述:
IOC为控制反转,DI为依赖注入,DI是IoC的更具体的说明。
IOC的演化过程为:分离接口与实现->抽象工厂->反转控制
3.Bean的配置:
Bean的配置形式有2种:一种基于xml文件的,一种基于注解的。
Bean的配置方式有:通过反射的方式,要求bean中有无参数的构造器。
Spring提供2中IoC容器的实现:一种基于BeanFactory的,一种基于BeanFactory的子接口ApplicationContext的,提供了更多的功能,一般使用后者进行初始化。
Bean的获取方式有:通过id名称和通过class如下:
Person zhao = (Person) c.getBean("zhao"); Person zhao1 = c.getBean(Person.class);
属性的注入方式有:set方法注入,构造器注入,抽象工厂注入(不推荐),构造器注入配置如下:
构造器注入还可以有index、type属性来精确注入。
<bean id = "chen" class="com.test.demo.Person" index="" type="">
<constructor-arg value="陈三蛋"></constructor-arg>
</bean>
特殊字符通过<![CDATA[]]>来引入。
<property name="word">
<value><![CDATA[<HTML>天下第一]]></value>
</property>
通过ref属性引入标签,也可以内部创建bean,内部bean不能被外部引用
<property name="car" ref="benz"></property>
支持联级注入:
<property name="car.name" value="奥迪Q800"></property>
注入list、set、map集合类:
<property name="cars">
<list>
<ref bean="benz"/>
<ref bean="benz"/>
</list>
</property>
java.util.Properties的配置方式://HashTable的一个子类
<props><prop key="">value</prop>...
外部配置<map>,配置独立的集合bean,引入util
<util:list id="myCars">
<ref bean="benz"/>
<ref bean="benz"/>
</util:list>
使用p命名空间:引入p命名空间,简化配置
<bean id="zhao" class="com.test.demo.Person" p:name="赵铁蛋" p:cars-ref="myCars"></bean>
4.自动装配:
SpringIOC容器可以自动状态。仅仅需要在<bean>的autowire属性里指定自动装配的模式。 缺点,会配置所有属性,这就不是很好。
byType(多个装配容易初问题)、byName(id名和setter方法中的名字一致) 、constructor(不推荐)
5.配置bean的关系:
parent=""继承配置
abstract="true"声明抽象bean不能配置。
配置关联关系depends-on属性,表明在配置该bean之前需要配置好其他bean
通过逗号和空格指定多个bean
Spring入门第一课:Spring基础与配置Bean的更多相关文章
- Spring入门第一课
今天先不讲Spring是什么. Spring网址:http://projects.spring.io/spring-framework/ Eclipse 安装开发IDE 在Eclipse Market ...
- Spring入门(8)-基于Java配置而不是XML
Spring入门(8)-基于Java配置而不是XML 本文介绍如何应用Java配置而不是通过XML配置Spring. 0. 目录 声明一个简单Bean 声明一个复杂Bean 1. 声明一个简单Bean ...
- emacs 入门第一课:Emacs里的基本概念
Table of Contents 无聊的开场白 buffer(缓冲区) window(窗口)与frame Emacs的mode Emacs Lisp 函数function.命令command.键绑定 ...
- Spring 通过工厂方法(Factory Method)来配置bean
Spring 通过工厂方法(Factory Method)来配置bean 在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. ...
- Spring入门(2)-通过构造器注入Bean
Spring入门(2)-通过构造器注入Bean 前一篇文章将了最基本的spring例子,这篇文章中,介绍一下带有参数的构造函数和通过构造器注入对象引用. 0. 目录 带有参数的构造函数 通过构造器注入 ...
- Asp.Net Web API 2(入门)第一课
Asp.Net Web API 2(入门)第一课 前言 Http不仅仅服务于Web Pages.它也是一个创建展示服务和数据的API的强大平台.Http是简单的.灵活的.无处不在的.你能想象到几乎 ...
- Spring入门第二课:Spring配置Bean的细节
1.配置bean的作用域: 通过配置scope属性可以bean的作用域,参数有 prototype.request.session.singleton. 1)singleton为单例,IoC容器只会创 ...
- Android入门第一课之Java基础
通知:由于本周六场地申请没通过,所以本周的培训临时取消. 今天给大家带来的是Android入门的第一课,由于教室申请的不确定性,因此,每次培训的内容都会在博客先提前释放出来.首先Android的APP ...
- Spring入门第二课
看代码 package logan.spring.study; public class HelloWorld { private String name; public void setName2( ...
随机推荐
- CentOS 编译 openjdk
1. 概述 <<深入理解Java虚拟机--JVM高级特性与最佳实践>>第一章就谈到自己编译jdk,来吧. 2. 编译环境 VMware12 CentOS-7-x86_64-E ...
- ActiveX界面已显示,调用方法报undefined的处理办法
1.在ie中将当前网址加入信任网站 2.设置->internet选项->安全->受信任站点->自定义级别:将所有有关ActiveX的选项设置为启用 3.重启ie再次访问即可. ...
- CentOS使用fdisk扩展磁盘空间
使用情况: 1. 虚拟机配置150G硬盘,初始化为/dev/sdb1,后因为磁盘空间不够使用,动态扩容至300G,扩容完成后,想要动态扩容/dev/sdb1分区. 2. 磁盘空间300G,之前分区只划 ...
- Sql-exec
--显示sql server现有的所有数据库 exec sp_helpdb --查看数据表设置的约束 exec sp_helpconstraint SubjectType --update selec ...
- java模拟post提交
package javapost; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOE ...
- SQL Server 2014 聚集列存储
SQL Server 自2012以来引入了列存储的概念,至今2016对列存储的支持已经是非常友好了.由于我这边线上环境主要是2014,所以本文是以2014为基础的SQL Server 的列存储的介绍. ...
- QTimer掉坑出坑过程
最近遇到一个问题,就是关于QTimer设置了10ms,结果不生效,很头疼啊,查了快一天了,终于知道为什么了? 先说下QTimer的使用方法: m_delayHideTimer这是QTimer的对象. ...
- Oracle日常性能查看
判断回滚段竞争的SQL语句:(当Ratio大于2时存在回滚段竞争,需要增加更多的回滚段)select rn.name, rs.GETS, rs.WAITS, (rs.WAITS / rs.GETS) ...
- jQuery ajax从后台取不到数据
ajax post data 获取不到数据,注意 content-type的设置 .post/get 关于 jQuery data 传递数据.网上各种获取不到数据,乱码之类的. 好吧今天我也遇到了 ...
- ZT SAFE_DELETE
SAFE_DELETE 分类: c/C++ 2008-10-14 14:26 706人阅读 评论(2) 收藏 举报 delete文本编辑nullflash破解加密 我发现学程序大家差不多都有相似的地方 ...