Spring入门(1)

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

构建spring框架,需要安装STS插件和引入依赖

<!-- 1.Spring核心依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
 
		

1.IOC和DI思想

(1)IOC:控制反转,是一种设计思想,好比MVC

         反控:调用者只管负责从spring容器中获取需要使用的对象,不关心对象的创建过程,也不关心该对象依赖对象的创建以及依赖关系的组装,也就是把创建对象的控制权反转给了spring框架

这里完美地体现了好莱坞法则(Don't call me,I' ll call you)

DI:Dependency Injection(依赖注入)从字面上分析:指spring创建对象的过程中,将对象依赖属性(常量,对象,集合)通过设置配置设值给该对象。

IoC从字面上意思很难体现出谁来维护对象之间的关系,Martin Fowler提出一个新的概念--DI,更明确描述了“被注入对象(Service对象)依赖IOC容器来配置依赖对象”。

2.Bean

被Spring IoC容器管理的对象称之为bean

Spring IoC容器如何知道哪些是它管理的对象:

此时需要配置文件,Spring IoC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配

元数据的配置有三种:

  • XML-based configuration
  • Annotation-based configration
  • Java-based configuration

Spring IoC管理bean的原理:

 

bean的创建:

BeanFactory:Spring最底层的接口,只提供了IoC功能,负责创建、组装、管理bean,一般不使用BeanFactory,而推荐使用ApplicationContext(应用上下文)

ApplicationContext接口继承了BeanFactory,除此之外还提供AOP集成、国际化出路、事件传播、统一资源价值等功能

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
Hello h = (Hello) applicationContext.getBean("helloclass");

Bean作用域:

bean元素继承 

bean元素的继承:把多个bean元素共同属性配置抽取到另一个公用的bean元素中

原来的配置:

 存在继承后:

 

3.DI核心

什么是注入操作?

怎么注入

          setter方法注入

          构造器注入

注入值类型

1)常量值(简单类型):value元素

2)对象:ref元素

3)集合:对应集合类型元素 

Setter方法注入

 其实就是通过对象的setter方法来完成对象的设置操作      

1.使用bean元素的<property>子元素设置

  1)常量类型,直接使用value赋值

    

  2)引用类型,使用ref赋值

   

  3)集合类型,直接使用对应的集合类型元素即可

   

2.Spring通过属性的setter方法注入值

3.在配置文件中配置的值都是String,Spring可以自动的完成类型转换

构造器注入

其实就是通过构造器,在完成创建对象的时候,同时初始化对象设置数据的操作:

构造器方式注入使用:<consructor-arg/>元素

 

4.DI注解

1)Autowired注解

  • 可以让spring自动的把属性所需要的对象找出来,并注入到对象
  • 可以贴在字段或者setter方法上
  • 可以同时注入多个对象
  • 可以注入一些内置spring内置的重要对象,比如BeanFactory,ApplicationContext,ServletContext等
  • 默认情况Autowired注解必须找到对应的对象,否则报错  通过required=false来避免这个问题:@Autowired(required=false)

Resource的用法和Autowired差不多

2)Value注解

Autowired和Resource注解用于注入对象,Value注解用于注入常量数据 

5.IOC注解

bean组件版型:四个组建的功能相同,只是用于标注不同类型的组件

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注

@Repository用于标注数据访问组件,即DAO组件

@Service用于标注业务层组件

@Controller用于标注控制层组件(如struts中的Action,SpringMVC的controller)

此时需要配置IOC注解的解析器

使用<context:component-scan base-package=" "/> 表示去哪些包及其子包中去扫描组件注解

作用域注解:

使用Scope注解,设置Bean的作用域。

初始化和销毁注解:

@PostConstruct用于贴在初始化方法上

@PreDestory用于贴在销毁方法上

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值