zoukankan      html  css  js  c++  java
  • Java : Spring基础 IOC

    使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    创建一个工厂,可以用 getBean()获取一个交给spring管理的类实例.

    XML配置文件:
    bean标签里面id代表名字(name和id差不多,有一些区别),getBean就需要这个id.
    class 代表用哪一个类生成实例对象.
    init-method 可以指定对象被实例化之后执行的一个方法,需要在类里面实现这个方法
    destroy-method 指定对象被销毁之前执行的方法,(前提:是单例(默认就是单例),而且在工厂关闭时才会被销毁.)
    scope 代表bean的作用范围:
      singleton: 默认, 单例模式
      prototype: 多例模式
      request: 应用在web项目中,创建之后放到request范围中
      session: 应用在web项目中,创建之后放到session范围中
      globalsession: 应用在web项目中,必须在porlet环境下使用,如果没有这种环境,那么他就相当于session

    属性注入:
      构造方法方式: 首先需要声明类的构造函数, 然后在配置里面如:
      <bean id="userService" class="com.smile.myweb.UserServiceImpl" scope="prototype">
        <constructor-arg name="name" value="哈哈"/>
        <constructor-arg name="age" value="18"/>
      </bean>

      set方法方式:需要声明set方法,然后配置:
      <bean id="userService" class="com.smile.myweb.UserServiceImpl" scope="prototype">
        <property name="name" value="哈哈"/>
        <property name="age" value="18"/>
      </bean>
      (注意如果属性是一个对象类型,就需要用ref来设置bean的id或name,value是赋普通值用的)

      p名称空间的方式(spring2.5以后)首先需要引入 xmlns:p="http://www.springframework.org/schema/p"
      然后用p:user="user"赋值普通属性或者用p:user-ref="user"赋值对象属性.

      SpEL的方式属性注入:value=#{'String'},字符串类型需要用单引号,对象类型直接写bean的id,也可以使用对象的属性或者方法等进行赋值.

      集合类型的属性注入可以这么声明(set, map 同理):
      <property name="user">
        <list>
          <value>王五</value>
          <value>李四</value>
        </list>
      </property>

      在xml配置文件中引入别的配置文件 <import resource="applicationContext2.xml"/>

    ==============================================================================

    注解方式IOC:
    需要在xml里面配置<context:component-scan base-package="com.smile.myweb"/>

    @Component : 修饰一个类,把类交给springIOC容器(相当于<bean>), 里面value相当于类的id.
      @Controller : 衍生注解,web层
      @Service : 衍生注解,业务层
      @Repository : 衍生注解,持久层

    初始化方法的注解@PostConstruct, 加在init方法上,相当于init-method
    销毁方法的注解@PreDestroy, 加在destroy方法上,相当于destroy-method

    bean作用范围的注解:@Scope, 默认是singleton,prototype是多例

    属性注入的注解:
    @Value : 设置普通属性的值
    @Autowired : 设置对象属性的值(默认是按类型来注入对象的,如果需要按id注入,需要搭配@Qualifier(value="beanId"))
    (@Resource相当于 @Autowired+@Qualifier,里面的name就相当于beadId,这个是spring实现的规范)

  • 相关阅读:
    Java 线程安全与锁优化
    Linux内常用的BASH命令
    Java导出CSV用MS Office Excel打开乱码问题一招制胜办法
    素数个数求解与素数的判定
    Java 线程间的通信wait(), notify(), join(), ThreadLocal讲解
    Java volatile关键字特性介绍
    项目架构相关
    HTTP POST 请求 及 @RequestParam @RequestPart @RequestBody
    Web安全相关
    Thread和Runable比较
  • 原文地址:https://www.cnblogs.com/cccy0/p/10242732.html
Copyright © 2011-2022 走看看