Spring第一天
来源:互联网 发布:杭州淘宝学院 编辑:程序博客网 时间:2024/05/22 06:39
Spring 框架
a.概述
Spring 框架: 可以解决对象创建以及对象之间依赖关系的一种框架。且可以和其他框架一起使用;spring与struts,spring与hibernat(起到整合作用的一个框架)Spring提供了一站式解决方案:1) Srping core :Spring的核心功能,ioc容器,解决对象创建及依赖关系.2) Srping Web :Spring对web模块的支持。 可以与struts整合,让struts的action创建交给srping3) Spring Dao Spring 对jdbc操作的支持【jdbcTemplate模板工具类】4) Spring ORM Spring 对orm的支持既可以与hibernate整合也可以使用Spring对hibernate操作的封装5) Spring AOP 切面编程6) Spirng EE Spring对javaEE其他模块的支持
b.开发步骤
spring各个版本中: 在3.0以下的版本中,源码有spring中的相关的所有包【spring功能+依赖包】 在3.0以上的版本,源码中只有spring得到核心功能包【没有依赖包】(如果要是用依赖包,需要单独下载!) 1)源码:jar文件: spring-framework-3.25 RELEASE commons-longging-1.13.jar 日志 spring-beans-3.25.RELEASE.jar bean节点 spring-context-3.25.RELEASE.jar spring 上下文节点 spring-core-3.25.RELEASE.jar spring核心功能 spring-experssion-3.25.RELEARSE.jar spring表达式相关表 上是必须引入的5个jar文件,在项目中可以用户库管理
2) 核心配置文件:applicationContext.xml Spring配置文件:applicationContext.xml/bean.xml约束参考:spring-framework-3.2.5.RELEASE\docs\spring-framework-reference\htmlsingle\index.html
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"></beans>
Bean对象的细节:1)对象创建:单例/多例scope="singleton" ,singleton,即是单例模式 [server/dao/工具类]scope="prototype"多例; 【Action对象】2)什么是创建?scope="singleton" 在程序启动的时候就已经创建了scope="prototype" 在用到对象的时候才创建创建3)是否延迟创建lazy_init="false" 默认为false ,不延迟创建,在启动程序的时候就创建对象lazy_init="true" 延迟初始化,在用到对象的时候才创建对象(只对单例有效)4)创建对象之后,初始化/销毁inti-method="init_user" 【对应对应的init_user方法,在对象创建之后执行】
@Test public void testIOC()throws Exception { // 得到IOC容器对象 【用实现类,因为要调用销毁的方法】 ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/a_hello/applicationContext.xml"); System.out.println("-----容器创建-----"); // 从容器中获取bean User user1 = (User) ac.getBean("user"); User user2 = (User) ac.getBean("user"); System.out.println(user1); System.out.println(user2); // 销毁容器对象 ac.destroy(); }
SpringIOC 容器
springIoc容器是Spring核心内容作用:创建对象&处理对象的依赖关系容器创建对象:创建对象有几种方式:1)调用无参构造器2)调用参数构造器3) 工厂创建对象-- 工厂类,静态方法创建对象-- 工厂类,非静态方法创建对象
<?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="user1" class="cn.itcast.b_create.User" scope="singleton"> </bean>--> <!--带参构造器--> <bean id="user" class="cn.itcast.b_create.User" scope="singleton"> <constructor-arg value="Jack" index="0" type="java.lang.String" ></constructor-arg> <constructor-arg value="100" index="1" type="int"></constructor-arg> </bean> <!--定义一个字符串,值是"jack";String s = new String("jack");--> <bean id="str" class="java.lang.String"> <constructor-arg value="Jacks"></constructor-arg> </bean> <bean id="user2" class="cn.itcast.b_create.User" scope="singleton"> <constructor-arg index="0" type="java.lang.String" ref="str"></constructor-arg> <constructor-arg value="100" index="1" type="int"></constructor-arg> </bean> <!--工厂类创建对象--> <!--实例方法--> <!--先创建工厂--> <bean id="factory" class="cn.itcast.b_create.ObjectFactory"></bean> <!--在创建User对象,用factory的实例方法--> <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean> <!--工厂类:静态方法--> <bean id="user4" factory-method="getStaticInstance" class="cn.itcast.b_create.ObjectFactory"></bean> <!-- class 指定的就是静态方法 factory-bena 指定的是实例化方法 --></beans>
对象依赖关系如何给对象的属性赋值?1)通过构造函数2)通过set方法给属性注入值3)p名称空间4)自动装配
<?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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user" class="cn.itcast.c_property.User" > <constructor-arg value="jack"></constructor-arg> <constructor-arg value="100"></constructor-arg> </bean> <bean id="user1" class="cn.itcast.c_property.User"> <property name="id" value="0001"></property> <property name="name" value="jack"></property></bean> <!--创建userdao--> <bean id="userDao" class="cn.itcast.c_property.UserDao"></bean> <!--创建userService--> <bean id="userService" class="cn.itcast.c_property.UserService"> <!--要注入userDao--> <property name="userDao" ref="userDao"></property> </bean> <!--action instance--> <bean id="userAction" class="cn.itcast.c_property.UserAction"> <!--处理对象的依赖关系,DL--> <property name="userService" ref="userService"></property> </bean><!--内部bean--><bean id="userAction1" class="cn.itcast.c_property.UserAction"> <property name="userService" > <bean class="cn.itcast.c_property.UserService"> <property name="userDao"> <bean class="cn.itcast.c_property.UserDao"> </bean> </property> </bean> </property></bean></beans>
内部bean和直接一步一步的注入的区别: 1)内部bean注入的bean不能被外部bean使用,相当于局部变量不能用到全局变量里面; 2)内部bean不太容易维护。
p名称空间的使用:
<?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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="userDao" class="cn.itcast.c_property.UserDao"></bean> <bean id="userService" class="cn.itcast.c_property.UserService" p:userDao-ref="userDao"> </bean> <bean id="user" class="cn.itcast.c_property.User" p:name="灰太狼"></bean></beans>
自动装配(了解)
更具名称自动装配:autowire=”byName”,并自动注入
自动去ioc容器中自动查找与属性同名的对象
<?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" default-autowire="byName"> <!--自动装配--> <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean> <bean id="userService" class="cn.itcast.d_auto.UserService"></bean> <bean id="userAction" class="cn.itcast.d_auto.UserAction" autowire="byName"></bean></beans>
注解
注解方式可以简化spring的IOC容器的配置!使用注解步骤:1)先引入context名称空间xmlns:context="http://www.springframework.org/schema/context"2)开启注解扫描<context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan>3)使用注解通过注解的方式,把对象加入ioc容器。 创建对象以及处理对象依赖关系,相关的注解:@Component 指定把一个对象加入IOC容器@Repository 作用同@Component;在持久层使用@Service 作用同@Component;在业务逻辑层使用@Controller 作用同@Component;在控制层使用@Resource 属性注入
总结:
1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI)2) 注解可以和XML配置一起使用。3) Spring与Struts框架整合Spring,负责对象对象创建Struts, 用Action处理请求Spring与Struts框架整合,关键点:让struts框架action对象的创建,交给spring完成!Spring与Hibernate整合:【SSH整合:Spring与Struts关键点: action交给spring创建!Spring与Hibernate关键点: sessionFactory对象交给spring创建!】步骤:引入jar文件1)引入struts .jar相关文件2)spring-core 相关jar文件3)spring-web支持jar包spring-web-3.2.5.RELEASE.jar【Spring源码】struts2-spring-plugin-2.3.4.1.jar 【Struts源码】配置:4)配置XMLstruts.xml 【struts路径与action映射配置】bean.xml 【spring ioc容器配置】web.xml【核心过滤器: 引入struts功能】【初始化spring的ioc容器】【初始化spring的ioc容器】查看api。4) 代码以及配置
>Spring第二天
阅读全文
0 0
- Spring自学第一天
- Spring学习第一天
- spring的第一天
- Spring第一天
- Spring框架第一天
- Spring框架第一天
- Spring第一天
- Spring第一天
- Spring--第一天
- Spring学习第一天
- spring第一天
- Spring第一天
- Spring第一天
- spring web mvc第一天
- Spring第一天学习总结
- Java开发Spring第一天
- spring学习笔记第一天(1)
- Spring学习第一天(下)
- Python list []
- 模拟量读取
- python第二次采集数据小记
- ubuntu14.04 mysql升级到5.7版本出现GPG error错误解决办法
- Python tuple
- Spring第一天
- 海思编解码芯片添加64M nor flash
- 基于比较的排序算法复杂度为nlg(n)的证明
- 【Linux排错】wget_insecurely
- eclipse+maven+springboot小Demo
- Python 条件判断
- 结构体内存对齐
- 结构体的字节对齐问题
- Vim编辑技巧