Spring【一】

来源:互联网 发布:mac terminal 指令 编辑:程序博客网 时间:2024/06/06 04:39

Spring是什么

Spring是一个开源的控制反转(IoC) 和面向切面(AOP) 的容器框架,可以管理Bean对象的创建和销毁。“程序员的春天来了~”
Spring贯穿表现层,业务层,持久层。

依赖注入

把“控制反转”称为“依赖注入”要更好理解一些。
依赖注入,是指程序运行过程中,如果需要另一个对象协作时,无须在代码中创建被调用者,而是依赖于外部容器的注入(依赖对象由容器注入)。
总结为,容器创建和管理依赖对象,并向应用动态注入。
原理
XML解析+反射
注入方式
1、构造
2、setter
3、注解

Spring的接口

Spring的两个核心接口:BeanFactory和ApplicationContex,其中ApplicationContext是BeanFactory的子接口,他们都代表Spring容器。Spring容器负责创建Bean实例。
BeanFactory有一个常用的实现类:

  • XmlBeanFactory

ApplicationContext常用的实现类:

  • FileSystemXMLApplicationContext
  • ClassPathXmlApplicationContext
  • AnnotationConfigApplicationContext

创建Spring容器实例时,必须提供Spring容器管理的Bean的详细配置信息,即bean.xml。
Resource接口是Spring提供的资源访问接口。

大部分的JavaEE应用,可以在启动web应用时自动加载ApplicationContext实例。
对于独立的应用程序,通常ApplicationContext实例操作Bean。

    ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"});

Spring容器中的Bean

bean的配置

<bean id="xbean" class="com.XBean" scope="">    <constructor-arg value="run"/>    <constructor-arg value="100km"/>    <property name="id" value=""/>//属性setter方法注入</bean>数据源bean<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">    <property name="driverClass" value="com.mysql.jdbc.Driver"/>    <property name="jdbcUrl" value="jdbc:mysql://localhost/javaee"/>    <property name="user" value="root"/>    <property name="password" value="root"/></bean>

bean的scope

  • singleton单例。在默认情况下,当Spring创建ApplicationContext容器时,Spring会自动预初始化容器中所有singleton实例。
    可以在该<bean>中设置lazy-ini为true,使第一次获取bean会才初始化bean
  • prototype 每次从容器获取bean都是新的对象。

Spring容器对Bean没有特殊的要求,甚至不要求该Bean像标准的JavaBean,必须提供对应的setter和getter方法。
Spring中的 Bean是 java实例,java组件,而传统的java应用中的JavaBean通常作为DTO(数据传输对象),用来封装值对象,在各层之间传递数据。

注解

Spring3.0提供注解方式的配置管理。
Java配置类的三个常用Annotation
 1.@Configuration:用于修饰一个java配置类
 2.@Bean:用于修饰方法,该方法的返回值定义成容器中的一个Bean
  3.@Value:修饰一个Field,用于为属性赋值

0 0