spring 中的种种原理 - context

context指WebApplicationContext记得学spring大家都在写xml, 那个烦, 真是网上copy一份复制粘贴改改类名就用了.

echo-ssm 几种配置方式

web.xml限定

下面来自官网, 亲自未实践.

   <servlet>
     <servlet-name>dispatcher</servlet-name>
     <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
     </servlet-class>
     <init-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
   </servlet>
  
   <servlet-mapping>
     <servlet-name>dispatcher</servlet-name>
     <url-pattern>/</url-pattern>
   </servlet-mapping>

spi限定

还记得spi吗? 我们也可以使用spi的方式加载.

  public class MyWebAppInitializer implements WebApplicationInitializer {
  
      @Override
      public void onStartup(ServletContext container) {
        XmlWebApplicationContext appContext = new XmlWebApplicationContext();
        appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");
  
        ServletRegistration.Dynamic dispatcher =
          container.addServlet("dispatcher", new DispatcherServlet(appContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
      }
  
   }

关键是到底配置了什么?

context环境支撑了bean. ioc容器中管理的对象在这一层被配置.

echo项目中使用简单几行配置可以将kvpair注入, 下面出自spring-core文档

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>
    <bean id="kv" class="beer.zeer.KVPair">
        <property name="key" value="ping" />
        <property name="val" value="pong" />
    </bean>

相比之下, 注解也可以使用, 之前说这其实就是运行时的一种方式.

@Component
public class KVPair {
    @Value("ping")
    private String key;
    @Value("pong")
    private String val;
}

这属于field注入, 相似的还有构造器, setter注入方式. 这不属于讨论的范围.

这里context是一个ioc容器, 但在mvc的流程中, 还有很长一段路需要走.

下面来谈谈context配置主要方式, 长话短说spring默认提供了三种方式, echo中用到的是2注解.

  1. xml
  2. 注解
  3. 脚本

这是spring实现的几种方式, 接下来谈谈原理, 理解之后, 你可以自定义实现db注入, txt注入.

原理已经看懂了, 太长, 写不下, 看的人慢慢琢磨吧.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值