设为首页 加入收藏

TOP

Spring6(二)
2023-07-25 21:42:13 】 浏览:46
Tags:Spring6
eSystemXmlApplicationContext("D:/Spring1.xml");
  • 查阅源码可知,ApplicationContext有一个父接口是ListableBeanFactory,ListableBeanFactory的父接口是BeanFactory

    BeanFactory是Ioc容器的顶级接口

    Spring的IoC容器底层实际上使用了工厂模式。Spring底层的IoC是通过 XML解析+工厂模式+反射机制

  • 实例化对象的时机:当以下代码执行时就会实例化对象

    new ClassPathXmlApplicationContext("spring6.xml");
    
  • 启用Log4j2日志框架

    • 第一步:引入log4j2的依赖
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.19.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j2-impl</artifactId>
        <version>2.19.0</version>
    </dependency>
    
    • 第二步:在类的根路径下提供log4j2配置文件(文件名固定为log4j2.xml,文件必须被放到类根路径下)
    <?xml version="1.0" encoding="UTF-8"?>
    
    <configeration>
        <loggers>
            <!-- level指定日志级别,从低到高的优先级:
     			ALL < TRACE < DEBUG < WARN < ERROR < FATAL < OFF 
    		-->
        	<root level="DEBUG">
                <appender-ref ref="spring6log"/>
            </root>
        </loggers>
        
        <appenders>
             <!-- 输出日志信息到控制台 -->
        	<console name="spring6log" target="SYSTEM_OUT">
                 <!-- 日志输出的格式 -->
            	<PatternLayout pattern="%d{yyyy-MM-dd HH:mm} [%t] %-3levle %logger{1024} -%msg%n"/>
            </console>
        </appenders>
    </configeration>
    
    • 第三步:使用日志框架
    Logger logger = LoggerFactory.getLogger(FirstSpringtest.class);//在哪个类里面就传什么参数
    loggee.info("输入你想记录日志的内容")
    

    依赖注入

    构造注入

    通过调用构造方法来给属性赋值,在bean标签里面添加constructor-arg标签

    <!-- 构造注入 通过index指定参数 -->
    <!-- 
    	index 属性指定参数下标,第一个参数下标是0
     	ref 属性用于指定注入bean的id
    -->
    <constructor-arg index="0" ref="userDaoBean"/>
    
    <!-- 构造注入 通过name指定参数 -->
    <!-- name属性是参数的名字 -->
    <constructor-arg name ref="userDaoBean"/>
    
    <!-- 构造注入 spring自己做类型匹配 -->
    <!-- 不指定下标也不指定参数名  -->
    <constructor-arg name ref="userDaoBean"/>
    

    set注入

    set注入的话,必须提供一个set方法,spring会调用这个set方法,来给userDao赋值。

    想要让spring调用对应的set方法,需要配置property标签

    <!-- set注入 需要配置property标签 -->
    <!-- 
    	name属性是 set方法的方法名,去掉set,然后首字母变成小写 Eg: setAbcd()-----abcd
     	ref 属性用于指定注入bean的id
    -->
    <!-- set方法起名最好是按照规范,一般借助IDEA自动生成 -->
    <proprety name="xxxx" ref="userDaoBean"/>
    

    set注入专题

    注入外部Bean

    之前的几个例子就是外部注入:

    外部bean的特点:bean定义在外面,然后在property标签中通过ref属性引入

    注入内部Bean

    在Bean标签中嵌套bean标签

    <bean id="studentBean" class="com.winter.spring6.bean.studentBean">
    	<property name="userDao">
        	<bean class="com.winter.spring6.bean.userBean"/>
        </property>
    </bean>
    

    注入简单类型

    在property标签中 使用value属性给简单类型赋值

    <!-- value 属性用于给简单类型赋值 -->
    <proprety name="xxxx" value="123"/>
    

    什么是简单类型?

    使用IDEA查找Beanutils类,然后找到isSimpleva lueType方法,查看里面的代码可知

    • 基本类型
    • 包装类
    • 枚举类
    • 字符串类型
    • 数字
    • 日期Date
    • 时间、时区Temporal
    • URI、URL
    • 语言local
    • Class

    简单类型的应用:让spring去管理数据源

    首页 上一页 1 2 下一页 尾页 2/2/2
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇gRPC之初体验 下一篇day03-Spring管理Bean-IOC-01

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目