zoukankan      html  css  js  c++  java
  • 孙哥讲解spring5day 3&day 4 lq

    第二章、第一个spring程序

    5. 细节分析

    • 名词解释

      Spring工厂创建的对象,叫做bean或者componet
      
    • spring工厂的相关方法

      public class TestSpring {
          @Test
          public void test1() {
              //获得对应的spring工厂对象
              ApplicationContext context = new ClassPathXmlApplicationContext("/applicationContext.xml");
              //通过工厂类获得 具体的bean对象
              Person person = (Person) context.getBean("person");
              System.out.println("person = " + person);
      
              //context.getBean(Person.class) 只能有一个bean 是 Person类型
              Person bean = context.getBean(Person.class);
              Person person1 = context.getBean("person", Person.class);
      
              //getBeanDefinitionNames()  是获得配置文件中所有bean标签的id
              String[] beanDefinitionNames = context.getBeanDefinitionNames();
              for (String beanDefinitionName : beanDefinitionNames) {
                  System.out.println("beanDefinitionName = " + beanDefinitionName);
              }
      
              //根据指定的class类型,获得对应的bean标签的id
              String[] beanNamesForType = context.getBeanNamesForType(Person.class);
              for (String s : beanNamesForType) {
                  System.out.println("s = " + s);
              }
      
              //用于判断配置文件中是否存在指定id的bean
              boolean person1 = context.containsBeanDefinition("person");
              System.out.println("person1 = " + person1);
              boolean a = context.containsBeanDefinition("a");
              System.out.println("a = " + a);
      
              //用于判断配置文件中是否存在指定id的bean
              boolean person1 = context.containsBean("person");
              System.out.println("person1 = " + person1);
          }
      }
      
    • spring配置文件需要注意的细节

      1. 只配置class属性
      <bean class="com.practice.spring.pojo.Person"/>
      a) 上述配置 是可以通过getBeanDefinitionNames()方法获得id值的
      b) 应用场景: 如果这个bean只需要使用一次 name就可以省略id值
      		   如果这个bean会使用多次,或者被其他bean要引用就需要设置id值(引用必须通过id标识)
      		
      2. name属性
      作用:在spring的配置文件中,是可以为bean对象定义别名
      相同:
      	1. context.getBean("id|name")-->object
      	2. <bean id="" class=""
      		等效
      	   <bean name="" class=""
      区别:
      	1. 别名可以定义多个(用,分隔),但是id属性只能有一个
      	2.代码
      	//用于判断配置文件中是否存在指定id的bean,不能判断name值
              boolean person1 = context.containsBeanDefinition("person");
              System.out.println("person1 = " + person1);
              boolean a = context.containsBeanDefinition("a");
              System.out.println("a = " + a);
      
              //用于判断配置文件中是否存在指定id的bean,也可以判断name值
              boolean person1 = context.containsBean("person");
              System.out.println("person1 = " + person1);
      

    6. Spring工厂的底层实现原理(简易版)

    spring工厂可以调用对象私有的构造方法创建对象
    

    1631198756270

    7. 思考

    Q: 在开发过程中,是不是所有的对象都会交由Spring工厂来创建?
    A: 理论上是的,但是在实际开发过程中,具体的实体类对象都是由持久层框架来创建的.或者自己new的.spring创建的只是交由ioc容器管理的bean对象
    

    第三章、Spring5.x与日志框架的整合

    目的: 日志框架可以在控制台中,输出Spring框架运行过程中的一些重要的信息.
    好处: 便于了解Spring框架的运行过程,利于程序的调试
    
    • spring如何整合日志框架

      Spring5.x 默认整合的日志框架 logback log4j2
      
      Spring5.x 整合log4j
      	1. 引入log4j jar包
      	2. 引入log4.properties配置文件
      
      pom依赖(比较老的版本,根据视频来的)
      	<dependency>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-log4j12</artifactId>
                  <version>1.7.25</version>
              </dependency>
      
              <dependency>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                  <version>1.2.17</version>
              </dependency>
      
      log4j.properties
      ### 配置根
      log4j.rootLogger = debug,console
      
      ### 日志输出到控制台显示
      log4j.appender.console=org.apache.log4j.ConsoleAppender
      log4j.appender.console.Target=System.out
      log4j.appender.console.layout=org.apache.log4j.PatternLayout
      log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
      
  • 相关阅读:
    三十岁前不要去在乎的29件事
    大型网站架构演变和知识体系
    性情中人。。。
    blog搬新家了。。。把以前的文章也都搬过来了。看看以前的文章,想起了很多。。。
    2006620 11:42:00 王子劳尔,王者归来
    2006620 11:40:00 这一刻,便是我们的永远给最爱的安德烈.舍普琴科
    第一份工作一定要选一家好公司 摘在 唐骏 《我的成功可以复制》
    2006811 11:29:00 搜索算法及其在ACM竞赛中的应用(作者/刘力科 计算机系01级4班)
    内核学习驱动隐藏进程
    2005129 17:58:00 新年快乐
  • 原文地址:https://www.cnblogs.com/rbwbear/p/15249474.html
Copyright © 2011-2022 走看看