码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 学习

时间:2019-07-05 19:28:16      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:rtl   上下   文档   学习   ash   创建对象   lap   als   功能   

IoC 容器

IoC 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans

Spring 提供了以下两种不同类型的容器:BeanFactory 容器 和 ApplicationContext 容器。Application Context 是 BeanFactory 的子接口,也被成为 Spring 上下文。 ApplicationContext 容器包括 BeanFactory 容器的所有功能。所以通常建议使用ApplicationContext。BeanFactory 仍然可以用于轻量级的应用程序,如移动设备或基于 applet 的应用程序,其中它的数据量和速度是显著。

Beans.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-3.0.xsd"> <bean id="helloWorld" class="com.tutorialspoint.HelloWorld"> <property name="message" value="Hello World!"/> </bean> </beans>

 

BeanFactory 接口的实现中最常被使用的是 XmlBeanFactory 类

XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("Beans.xml"));

ApplicationContext 接口实现:

  • FileSystemXmlApplicationContext:ApplicationContext context = new FileSystemXmlApplicationContext ("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml");

  • ClassPathXmlApplicationContext:ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");

  • WebXmlApplicationContext

 

<?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-3.0.xsd">

   <bean id="helloWorld" class="com.tutorialspoint.HelloWorld" 
      scope="singleton">
   </bean>

</beans>

 

①xmlns="http://www.springframework.org/schema/beans",默认命名空间:它没有空间名,用于Spring Bean的定义;

②xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance",xsi命名空间:这个命名空间用于为每个文档中命名空间指定相应的Schema样式文件,是标准组织定义的标准命名空间。

作用域描述
singleton

在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值

prototype 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean() 
request 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
session 同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境
global-session 一般用于Portlet应用环境,该运用域仅适用于WebApplicationContext环境

 

 

 

 

 

 

Bean的生命周期可以表达为:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁 。可以在配置Bean时指定初始化和销毁方法。

<bean id="helloWorld" class="com.tutorialspoint.HelloWorld" init-method="init" destroy-method="destroy">
     <property name="message" value="Hello World!"/>
</bean>

 

依赖注入

1. 构造函数和setter依赖注入

// 构造函数的依赖注入
public class UserService {
    private UserDao userDao;
    public UserService(UserDao userDao) {
        this.userDao = userDao;
    }
}
<bean id="userService" class="com.test.UserService">
    <constructor-arg ref="userDao"/>    index="0" / type="int"
</bean>

// setter的依赖注入
public class UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
      this.userDao = userDao;
    }
}
<bean id="userService" class="com.test.UserService">
    <property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="com.test.UserDao"/>

<bean id="userService" class="com.test.UserService">
    <property name="userDao">
        <bean id="userDao" class="com.test.UserDao"/>
    </property>
</bean>

2. 集合属性注入

技术图片
<bean id="user" class="com.test.User">
    <property name="addressList">
        <list>
            <value>Beijing</value>
            <value>Shanghai</value>
        </list>
    </property>
    <property name="addressMap">
        <map>
            <entry key="1" value="Beijing"/>
            <entry key="2" value="Shanghai"/>
        </map>
    </property>
</bean>
View Code

Spring 容器可以在不使用<constructor-arg><property> 元素的情况下自动装配 bean 之间的关系,这有助于简化 XML 配置。

Spring 学习

标签:rtl   上下   文档   学习   ash   创建对象   lap   als   功能   

原文地址:https://www.cnblogs.com/anxiao/p/11140067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!