zoukankan      html  css  js  c++  java
  • day33_Spring学习回顾_01

    1、导入jar包:4 + 1 --> beans/core/context/expression + commons-logging

    2、编写目标类:dao 和 service

    3、spring配置文件
            IoC:<bean id="" class=""></bean>
            DI:<bean><property name="" value="" | ref=""></property></bean>

            实例化方式:
                默认构造
                静态工厂:<bean id="" class="工厂类全限定类名" factory-method="静态方法名称"></bean>
                实例工厂:<bean id="工厂的id" class="工厂类"></bean>
                                <bean id="" factory-bean="工厂的id" factory-method="方法名称"></bean>

                作用域:<bean id="" class="" scope="singleton | prototype"></bean>

                生命周期:<bean id="" class="" init-method="" destroy-method=""></bean>
                后处理bean:实现BeanPostProcessor接口,<bean class="后处理的实现类的全类名"></bean>,对容器中所有的bean都生效。

            属性注入:
                构造方法注入:<bean><constructor-arg index="" type=""></bean>
                setter方法注入:<bean><property name="" value="" | ref=""></bean></bean>
                p命名空间:简化<property> 格式:<bean p:属性名="普通值" p:属性名-ref="引用值"></bean> 
                    注意:使用p命名空间需要先声明命名空间。
                SpEL:<property name="" value="#{表达式}">
                    #{123} #{'abc'}
                    #{beanId.propName?.methodName()}
                    #{T(类).静态方法|字段}
                集合注入
                    数组 <array> ...</array>
                    List <list>...<list>
                    Set <set>...<list>
                    Map <map><entry key="" value=""></entry>...</map>
                    Properties <props><prop key=""></prop>...</props>

    4、核心api
            BeanFactory,延迟实例化bean,第一次调用getBean(); 时才会初始化Bean。
            ApplicationContext 一般常用,功能更强,采取非延时加载,当配置文件被加载时,就进行对象的实例化。 
                ClassPathXmlApplicationContext 加载classpath中的xml文件
                FileSystemXmlApplicationContext 加载指定盘符的文件,ServletContext.getRealPath()

    5、使后处理bean 只对一个<bean>生效

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    ​    // 使后处理bean 只对一个<bean>生效
        if("userServiceId".equals(beanName)) {
            System.out.println("执行了前方法:" + beanName);
        }
            return bean;
     }

    6、注解
            1、先配置扫描含有注解的类
                  <context:component-scan base-package="....">
            2、常见的注解
                  @Component 组件,注入任意bean

            WEB
                @Controller        web层
                @Service             service层
                @Repository       dao层

            注入字段或setter方法
                普通值:@Value
                引用值:
                    按类型:@Autowired
                    按名称1:@Autowired @Qualifier("名称")
                    按名称2:@Resource("名称")

            作用域:@Scope("prototype") 

            生命周期:
                初始化:@PostConstruct
                销毁方法:@PreDestroy

    7、注解和xml混合使用
        1.将所有的bean都配置xml中
            <bean id="" class=""></bean>
        2.将所有的依赖都使用注解
            @Autowired
                默认不生效。为了生效,需要在xml配置:<context:annotation-config>

        总结:
            注解1:<context:component-scan base-package=" ">
            注解2:<context:annotation-config>
                1、一般情况两个注解不一起使用。
                2、 “注解1”扫描含有注解(@Component 等)类,注入的注解自动生效。
                      “注解2”只在xml和注解(注入)混合使用时,使注入的注解生效。

  • 相关阅读:
    最大子数组的求解(包括首尾相接成环)
    学习进度条第五周
    学习进度条第四周
    学习进度条第三周
    软件工程概论作业二
    软件工程个人作业01
    软件工程概论总结
    梦断代码阅读笔记01
    构建之法阅读笔记04
    构建之法阅读笔记03
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9354705.html
Copyright © 2011-2022 走看看