大环境就是我又不会。所以开始了:
因为框架使用Spring(之前有提到过是MAVEN+SpringMVC),然后这里就是从下载开始一路向下吧。Spring框架作为一个开源的Java平台,由于简单而快速为Java应用程序提供了全面的基础设施,这个最初由Rod Johnson编写的框架到现在已经到5.0以上的版本,最近的一次更新也是在NOV.12。Spring的相关教程是在是太多了(我还是花了二十大洋在今年五月就买了本书嘤嘤嘤),然后相关的优点在这里:
• Spring 可以使开发人员使用 POJOs 开发企业级的应用程序。只使用 POJOs 的好处是你不需要一个 EJB容器产品,比如一个应用程序服务器,但是你可以选择使用一个健壮的servlet 容器,比如 Tomcat 或者一些商业产品。
• Spring 在一个单元模式中是有组织的。即使包和类的数量非常大,你必须并且只需要但是你需要的,而忽略剩余的那部分。
• Spring 不会让你白费力气坐重复工作,它真正的利用了一些现有的技术,像几个 ORM 框架、日志框架、JEE、Quartz 和 JDK 计时器,其他视图技术。
• 测试一个用 Spring 编写的应用程序很容易,因为 environment-dependent 代码被放进了这个框架中。此外,通过使用 JavaBean-style POJOs,它在使用依赖注入注入测试数据变得更容易。
• Spring 的 web 框架是一个设计良好的 web MVC 框架,它为 web 框架,比如 Structs 或者其他工程上的或者很少受欢迎的 web 框架,提供了一个很好的供替代的选择。
• 为将特定技术的异常(例如,由 JDBC、Hibernate,或者 JDO 抛出的异常)翻译成一致的, Spring 提供了一个方便的 API,而这些都是未经检验的异常。
• 轻量级的 IOC 容器往往是轻量级的,例如,特别是当与 EJB 容器相比的时候。这有利于在内存和 CPU 资源有限的计算机上开发和部署应用程序。
• Spring 提供了一个一致的事务管理界面,该界面可以缩小成一个本地事务(例如,使用一个单一的数据库)和扩展成一个全局事务(例如,使用 JTA)
这里需要注意最核心的:依赖注入 和 面向切面编程 。他就是这么玩的-
下载:
http://repo.spring.io/release/org/springframework/spring
这里版本练习的话随意选择,只要有最重要的那几个容器就行(核心容器、数据访问/集成、Web),下载好找个目录解压了。
初次尝试:
创建一个JavaProject,然后在lib中导入Spring的相关jar包,然后来个测试类-再来个配置xml:
package com.hbc.helloworld; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import lombok.Data; @Data public class HelloWorld { private String messAge; //Test For Collection List<Object> list; Set<Object> set; Map<Object, Object> map; Properties properties; }
package com.hbc.helloworld; import org.springframework.context.support.ClassPathXmlApplicationContext; @SuppressWarnings("all") public class MainApp { public static void main(String[] args) { HelloWorld obj = (HelloWorld) new ClassPathXmlApplicationContext("beans.xml").getBean("helloWorld"); System.out.println(obj.getMessAge()); System.out.println(obj.getList()); System.out.println(obj.getSet()); System.out.println(obj.getMap()); System.out.println(obj.getProperties()); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config /> <!-- Definition for javaCollection --> <bean id="helloWorld" class="com.hbc.helloworld.HelloWorld"> <!-- results in a setAddressList(java.util.List) call --> <property name="list"> <list> <value>INDIA</value> <value>Pakistan</value> <value>USA</value> <value>USA</value> </list> </property> <!-- results in a setAddressSet(java.util.Set) call --> <property name="set"> <set> <value>INDIA</value> <value>Pakistan</value> <value>USA</value> <value>USA</value> </set> </property> <!-- results in a setAddressMap(java.util.Map) call --> <property name="map"> <map> <entry key="1" value="INDIA" /> <entry key="2" value="Pakistan" /> <entry key="3" value="USA" /> <entry key="4" value="USA" /> </map> </property> <!-- results in a setAddressProp(java.util.Properties) call --> <property name="properties"> <props> <prop key="one">INDIA</prop> <prop key="two">Pakistan</prop> <prop key="three">USA</prop> <prop key="four">USA</prop> </props> </property> </bean>
既然测试过了第一个例子之后,然后就该明白这个到底怎么回事就可以了-:
首先得对几个容器产生概念(BeanFactory 容器 ApplicationContext 容器),接下来就是一堆测试类了。
从Bean的定义到Spring配置元数据,到Bean的作用域(Singleton作用域 prototype作用域),Bean的生命周期(初始化回调,销毁回调 的途径和方法),Bean的定义继承,依赖注入,注入内部Beans,注入集合(就像上面),Bean的自动装配和自动装配模式,以及自动装配的局限性,还有基于注解的配置(特指@Requried 和 @Autowried注释。)除此之外还有@Qualifier @PostConstruct @PreDestory @Resource @Configuration 和 @Bean当然最关键的了。本来想把代码都附上,但是好像太多而且意义不明,给自己留几点Point等到以后有问题去查询吧。(Bean作为核心还是很重要的) -不刷长度。