javaWeb---Spring框架入门


1.JavaSpring框架是service层架构, Spring使用基本的JavaBean来完成之前只可能由EJB完成的事情。然而,Spring的用途不只限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用均可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来讲,Spring是一个分层的JavaSE/EE full-stack( 一站式 ) 轻量级开源框架。

2.Spring的优势:html

2.1方便解耦,简化开发  (高内聚低耦合)java

2.2Spring就是一个大工厂(容器),能够将全部对象建立和依赖关系维护,交给Spring管理spring

 spring工厂是用于生成bean编程

2.3 AOP编程的支持服务器

Spring提供面向切面编程,能够方便的实现对程序进行权限拦截、运行监控等功能架构

2.4  声明式事务的支持app

  只须要经过配置就能够完成对事务的管理,而无需手动编程框架

2.5方便程序的测试ide

Spring对Junit4支持,能够经过注解方便的测试Spring程序函数

2.6方便集成各类优秀框架

  Spring不排斥各类优秀的开源框架,其内部提供了对各类优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

2.7下降JavaEE API的使用难度


3 入门案例

3.1导入jar包


3.2在src目录下创建目标和xml文件

    

3.3 xml代码解析:

      

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       					   http://www.springframework.org/schema/beans/spring-beans.xsd">
	<!-- 配置service 
		<bean> 配置须要建立的对象
			id :用于以后从spring容器得到实例时使用的 setBookdao >Bookdao >bookdao
			
			class :须要建立实例的全限定类名
	-->
	<bean id="bookServiceId" class="com.heima.spring_day01.bookServiceImpl" scope="prototype">
	    <property name="bookdao" ref="bookDaoId"></property>
	</bean>
		
	<bean id="bookDaoId" class="com.heima.spring_day01.bookDaoImpl">
	</bean>
</beans>

创建两个接口和两个实现类,在bookService里调用bookDao类中的add方法,因此xml里须要两个Bean,一个sericebean 一个daobean,之前用的时候都是经过new一个对象来实现,如今利用spring的话,把new的操做交给spring来执行,只须要调用getbean方法就能够获取对应的bean对象。

<bean id="bookServiceId" class="com.heima.spring_day01.bookServiceImpl" scope="prototype"> 这个id至关于一个引用键值,class是用来产生一个对象的。
 
<property>是class对应的属性。
ref--引用的bean.
 
 

 

测试类代码:

@Test
	public void fun()
	{
		String xmlPath = "/com/heima/spring_day01/bean.xml";
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
		
		bookService bookService = (com.heima.spring_day01.bookService) applicationContext.getBean("bookServiceId");
		bookService bookService1 = (com.heima.spring_day01.bookService) applicationContext.getBean("bookServiceId");
	    System.out.println(bookService==bookService1);
		bookService.save();
	}

String xmlPath = "/com/heima/spring_day01/bean.xml"; 这个是bean.xml的路径
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);经过读取配置文件来创建一个beanFactory。
bookService bookService = (com.heima.spring_day01.bookService) applicationContext.getBean("bookServiceId"); 经过xml文件的id键值来得到对应的beanFactory中的对象。

测试:

   

5.spring的属性注入

   1.构造函数

          经过bean.xml文件就能给对应类的构造函数进行赋值操做

         使用 <constructor-arg>来进行配置

   2.setter方法

           <property  name = ""  value=""/>属性来进行赋值

   3.集合注入

          使用     <property name="dStrings">  //dStrings是数据类型 能够是 set  map  class   list 等
                         <array> 对应数据类型:<map><list>等

                        </array>
                     </property>

   4.集合注入的xml配置:

<map>要使用<entry key="rose" value="肉丝"/>来设置key---value

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       					   http://www.springframework.org/schema/beans/spring-beans.xsd">
 <bean id="collectDataId" class="com.sping.bean_set.Collect">
     <property name="dStrings">
     	<array>
     		<value>ha1</value>
     		<value>ha2</value>
     		<value>ha3</value>
     		<value>ha4</value>
     	</array>
     </property>
     <property name="setStrings">
     	<set>
     		<value>小伙子1</value>
     		<value>小伙子2</value>
     		<value>小伙子3</value>
     		<value>小伙子4</value>
     	</set>
     </property>
     <property name="listStrings">
     	<list>
     		<value>hhhh1</value>
     		<value>hhhh2</value>
     		<value>hhhh3</value>
     		<value>hhhh4</value>
     		<value>hhhh5</value>
     		<value>hhhh6</value>
     	</list>
     </property>
	 <property name="mapStrings">
		<map>
			<entry key="rose" value="肉丝"/>
			<entry key="jack" value="肉丝"/>
		</map>	
	 </property>

 </bean>
</beans>

    集合注入的类:

 

package com.sping.bean_set;

import java.util.Arrays;
import java.util.List;
import java.util.Set;

import java.util.Map;
import java.util.Properties;

public class Collect {
    
	private String[] dStrings;
	private Set<String> setStrings;
	private List<String> listStrings;
	private Map<String, String>  mapStrings;
	private Properties propsData;
	
	public String[] getdStrings() {
		return dStrings;
	}
	public void setdStrings(String[] dStrings) {
		this.dStrings = dStrings;
	}
	public Set<String> getSetStrings() {
		return setStrings;
	}
	public void setSetStrings(Set<String> setStrings) {
		this.setStrings = setStrings;
	}
	public List<String> getListStrings() {
		return listStrings;
	}
	public void setListStrings(List<String> listStrings) {
		this.listStrings = listStrings;
	}
	public Map<String, String> getMapStrings() {
		return mapStrings;
	}
	public void setMapStrings(Map<String, String> mapStrings) {
		this.mapStrings = mapStrings;
	}
	public Properties getPropsData() {
		return propsData;
	}
	public void setPropsData(Properties propsData) {
		this.propsData = propsData;
	}
	@Override
	public String toString() {
		return "Collect [\ndStrings=" + Arrays.toString(dStrings) + ", \nsetStrings=" + setStrings + ", \nlistStrings="
				+ listStrings + ", \nmapStrings=" + mapStrings + ", \npropsData=" + propsData + "]";
	}
	
	
	
}

测试类:


public class Testfun {

	@Test
	public void  fun() {
		
		String xml = "/com/sping/bean_set/bean.xml";
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xml);
		Collect collect = (Collect) applicationContext.getBean("collectDataId");
		System.out.println(collect.toString());
	
	}
}


测试结果: