Spring(2) 使用ApplicationContext

  1. 现在学习才刚刚起步,对于spring的理解就是spring是一个大管家,它几乎把所有东西都当成bean来管理,当程序中需要什么的时候,也就是程序依赖什么的时候,spring就把这些依赖给注入进去,程序不用再自己去通过类似new的方式获得依赖。(书上说,如果你发现自己还经常使用new的话,那么你对java就还掌握得不够)。
  2. 大部分时候,程序都是使用ApplicationContext作为spring容器,而不是使用他的父接口BeanFactory,下面是一个简单的例子。程序的结构是:
    1. 引入spring框架,然后写一个beans.xml作为配置文件,spring通过beans.xml就可以管理这些bean了,这里是在xml文件中声明了一个id为chinese,实现类为Person,并且传给参数,参数名称为test,值为孙悟空的bean。
    2. 要先写好Person类,毕竟人家是bean的实现类嘛,然后Person类还必须得有setTest,因为传入参数名字为test。
    3. 写一个测试类(这不废话嘛)
  3. 然后说一下在在idea中怎么创建spring项目
    1. 首先,下载一个idea终结版,社区版是不支持spring开发的
    2. follow me         让他静静的下载                                        然后写配置文件先
    3. 其他就没什么好注意的了    吧,接下来是代码的结构和讲解                                                                                             结构                                                                                                         
      package service;
      //Person类,没啥好说
      public class Person {
          public Person(){
              System.out.println("正在执行无参构造器");
          }
          public void setTest(String name){
              System.out.println("正在调用setTest方法,传入的参数为" + name);
          }
      }
      
      <?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.xsd">
          <!--这里就是配置了一个bean-->
          <bean id="chinese" class="service.Person">
              <property name="test" value="孙悟空"/>
              <!--然后因为Person类有setText方法嘛,所以这里给test赋值-->
          </bean>
      </beans>
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class SpringTest {
          public static void main(String []args){
      //        测试类可以只用一行代码就可以了。
      //        ApplicationContext创建了spring容器,然后ApplicationContext会自动与初始化容器中的
      //        chineseBean,包括调用它的无参数的构造器,并且根据<property...>去执行你个setter方法
              ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
          }
      }
      //运行之后可以看到
      //        正在执行无参构造器
      //        正在调用setTest方法,传入的参数为孙悟空

      下面是手动创建spring容器,改为一下代码(都知道改哪里吧~~),这样操作的话是创建了sping容器,但是BeanFactory不会与预初始化容器中的Bean,这样一来就不会看到上边代码那样的输出,如果想自动创建spring容器但是不想预初始化bean的话,可以在bean元素下指定 lazy-init="true"让它不要预初始化,但是以BeanFactory来创建spring的话,就都不会预初始化的

      <bean id="chinese" class="service.Person" lazy-init="true">
              Resource resource = new ClassPathResource("beans.xml");
      //        通过当前路径下的beans.xml文件来创建resourse对象
              
              DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
      //        创建默认的BeanFactory容器
              
              new XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(resource);
      //        让BeanFactory容器加载配置文件

      这是我看书后自己写的!!!!!!!!

猜你喜欢

转载自blog.csdn.net/weixin_39452731/article/details/84674735