Spring6(spring6 jdk17)

  本篇文章为你整理了Spring6(spring6 jdk17)的详细内容,包含有spring6什么时候出 spring6 jdk17 spring6和spring5 spring6版本 Spring6,希望能帮助你了解 Spring6。

  

 ?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"

   !-- spring 配置文件,名字任意,最好放在根目录下,方便后期移植--

   /beans

  

 

  


 !-- 配置bean,这样spring才能帮助我们管理这个对象-- 

 

   !-- bean标签有两个重要的属性,--

   !-- --id 是bean的唯一标志,不能重复--

   !-- --class 必须是全路径,全限定类名(带包名的类名)--

   bean id="studentBean" /

  

 

  
import org.springframework.context.ApplicationContext;

  import org.springframework.context.support.ClassPathXmlApplicationContext;

   * @author Winter

   * @version 1.0

   * @since 1.0

  public class FirstSrpingTest {

   @Test

   public void testFristSpringCode(){

  // 第一步 获取spring容器对象

  // ApplicationContext 翻译为应用上下文,其实就是spring容器

  // ApplicationContext是一个接口,该接口下有很多实现类,其中一个就是ClassPathXmlApplicationContext

  // ClassPathXmlApplicationContext是专门从类路径加载spring配置文件的上下文对象

   ApplicationContext context = new ClassPathXmlApplicationContext("Spring.xml");

  // 第二步 根据bean的id从这个spring容器中获取这个对象

   Object studentBean = context.getBean("studentBean");

   System.out.println(studentBean);

  

 

 

  控制台输出:

  

com.winter.spring6.bean.studentBean@158d2680

 

  

 

  表示第一个Spring程序完成,Spring成功创建了一个student对象

  


 Class clazz = Class.forName("com.winter.spring6.bean.student")

 

   Object obj = clazz.newInstance();

  

 

  
Spring的配置文件名称不是固定的,想写啥写啥,但是要和下面代码中填入的字符串一致

  

 ApplicationContext context = new ClassPathXmlApplicationContext("Spring.xml");

 

  

 

  
Spring的配置文件可以有多个

  

 ApplicationContext context = new ClassPathXmlApplicationContext("Spring1.xml","Spring2.xml");

 

  

 

  
配置文件中配置的类不一定是自定义的,也可以是JDK中的类

  

 bean id="dataBean" / 

 

  

 

  
getBean() 方法返回的类型时Object,如果访问子类特有属性和方法时,使用时必须向下转型

  或者是在getBean() 方法传入第二个参数,XXXX.class(指定要返回的类型)

  

User user = ApplicationContext.getBean("userBean",User.class);

 

  

 

  
如果是从绝对路径调用spring配置文件,那么就需要

  

 ApplicationContext context = new FileSystemXmlApplicationContext("D:/Spring1.xml");

 

  

 

  
查阅源码可知,ApplicationContext有一个父接口是ListableBeanFactory,ListableBeanFactory的父接口是BeanFactory

  BeanFactory是Ioc容器的顶级接口

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

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

  

new ClassPathXmlApplicationContext("spring6.xml");

 

  

 

  
第二步:在类的根路径下提供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" 

 

   property name="userDao"

   bean /

   /property

   /bean

  

 

  注入简单类型

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

  

 !-- value 属性用于给简单类型赋值 -- 

 

   proprety name="xxxx" value="123"/

  

 

  什么是简单类型?

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

  字符串类型

  日期Date

  时间、时区Temporal

  URI、URL

  语言local

  Class

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

  以上就是Spring6(spring6 jdk17)的详细内容,想要了解更多 Spring6的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: