Spring Framework 4.0 学习整理。
Spring框架的核心部分就是Ioc容器,而Ioc控制的就是各种Bean,一个Spring项目的水平往往从其XML配置文件内容就能略知一二,很多项目,往往是外包公司的项目,配置文件往往是乱七八糟,抱着能跑就行,不报错就行的态度去写,然后在项目中后期发现各种缺失又去一通乱补,其结果就是,整个文档可读性极差,毫无章法。这也不能怪写这个XML的人,拿着苦逼程序员的工资干着架构师的工作必然是这个结果。为了程序员的幸福,我认为有必要来一套简单快速的官方文档核心配置归纳整理和解释,好让苦逼猿们在工作中能正确快速的提高自身和项目的整体水平。
看代码:
package com.herman.ss.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.herman.ss.pojo.Person; /** * @see spring4.0.0最新稳定版新特性,简单时候教程1 * @author Herman.Xiong * @date 2014年7月18日14:49:42 */ public class Test0 { /** * @see spring4.0简单使用教程0 */ public static void test0(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例 Person person0=(Person)ctx.getBean("person0"); //3.打印bean属性 System.out.println(person0); //4.给bean属性复制 person0.setName("herman"); person0.setAge(20); System.out.println(person0); } /** * @see spring4.0简单使用教程1 */ public static void test1(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例 只存在一个bean实例的时候可以使用Person.class 获取bean Person person0=(Person)ctx.getBean(Person.class); //3.打印bean属性 System.out.println(person0); //4.给bean属性复制 person0.setName("herman"); person0.setAge(20); System.out.println(person0); } /** * @see spring4.0简单使用教程2 */ public static void test2(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例,这是不能使用Person.class获取bean了,因为这时配置了两个Person bean,只能根据bean的id获取bean Person person0=(Person)ctx.getBean("person1"); //3.打印bean属性 System.out.println(person0); } /** * @see spring4.0简单使用教程3 使用value为对象属性赋值 */ public static void test3(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例 Person person0=(Person)ctx.getBean("person2"); //3.打印bean属性 System.out.println(person0); } /** * @see spring4.0简单使用教程4 使用bean的构造函数注入 */ public static void test4(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例 Person person0=(Person)ctx.getBean("person3"); //3.打印bean属性 System.out.println(person0); } /** * @see spring4.0简单使用教程5 使用bean的type为属性赋值 */ public static void test5(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例 Person person0=(Person)ctx.getBean("person4"); //3.打印bean属性 System.out.println(person0); } /** * @see spring4.0简单使用教程6 使用bean的引用对象以及null对象 */ public static void test6(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例 Person person0=(Person)ctx.getBean("person5"); //3.打印bean属性 System.out.println(person0); } /** * @see spring4.0简单使用教程7 使用bean的引用对象以及使用index下标为bean属性赋值 */ public static void test7(){ //1.加载配置文件 ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext.xml"); //2.获取bean实例 Person person0=(Person)ctx.getBean("person5"); //3.打印bean属性 System.out.println(person0); } public static void main(String[] args) { //test0(); //test1(); //test2(); //test3(); //test4(); //test5(); //test6(); test7(); } }
<bean class=”这个Bean的类”
name/id=”Bean在容器里面的唯一名称”
scope=”Bean的生命周期,详细解释看下面”
autowiring-mode=”这个Bean的properties的自动注入方式,详细解释看下面”
lazy-init=”是否为懒加载,详细解释看下面“
init-method=”容器初始化该Bean后的回调方法,详细解释看下面”
destroy-method = “容器在销毁该Bean后的回调方法,详细解释看下面“
abstract=”是否为抽象Bean,主要用来统一XML配置文档里面的很多Bean的属性配置,与Java的Abstract Class无任何关系”
parent=”父Bean的名称,会继承父Bean的属性,也是只在配置文档中有效,与Java的Class无任何关系”
factory-method=”工厂方法的名字”
factory-bean=”工厂Bean的名字”
depends-on =”依赖Bean的名字,Spring保证会在初始化这个Bean前先初始化被依赖的Beans,这个属性不会被子Bean继承,子Bean要重新写自己的depends-on”
autowire-candidate = “是否为自动注入的候选,一般当其他Bean设置autowiring-mode属性为自动搜寻时可以避免或允许该Bean被列入匹配列表”
primary = “是否将该Bean在其他Bean的自动注入候选人中设为首选”
>
// Constructor-arg方式给属性赋值写法一
<constructor-arg type=”int” value=”7500000″/>
// Constructor-arg方式给属性赋值写法二
<constructor-arg name=”years” value=”7500000″/>
// Constructor-arg方式给属性赋值写法三
<constructor-arg index=”0″ value=”7500000″/>
// Properties方式给属性赋值写法一
<property name=”beanOne”>
<ref bean=”另外一个Bean的名字”/>
</property>
// Properties方式给属性赋值写法二
<property name=”beanOne” ref=”另外一个Bean的名字“/>
// Properties方式给属性赋值写法三
<property name=”integerProperty” value=”1″/>
</bean>
项目结构:项目整合了struts2和spring4.0.6的jar包。
jar包下载:http://download.csdn.net/download/xmt1139057136/7649389 点击下载
如有疑问,请加qq群:135430763 共同学习!