Spring

Posted 倾城月光﹋淡如水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring相关的知识,希望对你有一定的参考价值。

autowire自动装配和spel

1。需要的实体类

2。需要的配置文件

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--自动装配autowire
    01.byName:  spring容器会根据实体类中的属性名称,去寻找有没有bean的id是属性名称的
                如果有则自动注入    *****
    02.byType: spring容器会根据实体类中的属性的类型,去寻找有没有bean的类型(class)相同的
                如果有则自动注入

     之后使用注解替换autowire
     01.@Resource   *****
     02.@Autowired
    -->
    <!--配置人类bean-->
    <bean id="person" class="com.xdf.Person" autowire="byName">
        <property name="name" value="小黑"/>
        <property name="age" value="13"/>
      <!--  <property name="dog" ref="dog"/>-->
    </bean>

    <!--配置Dog对应的bean-->
    <bean id="dog" class="com.xdf.Dog">
        <property name="name" value="小黑狗1"/>
        <property name="age" value="1"/>
    </bean>
    <!--验证 byType  不能出现超过1个的相同类型-->
    <bean id="dog2" class="com.xdf.Dog">
        <property name="name" value="小黑狗2"/>
        <property name="age" value="2"/>
    </bean>
<!--
   Spring  el 是 spring3.0之后出现的!
-->
    <bean id="person2" class="com.xdf.Person" autowire="byName">
        <property name="name" value="#{person.name}"/>
        <property name="age" value="#{person.age>15?18:12}"/>
    </bean>

</beans>

 

3。测试类

 

public class PersonDemo {

    @Test
    public  void  test1(){
        ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
        Person person=context.getBean("person",Person.class);
        System.out.println(person);
    }
    @Test
    public  void  test2(){
        ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
        Person person=context.getBean("person2",Person.class);
        System.out.println(person);
    }


    @Test
    public  void  test3(){
        //创建el表达式对象
        ExpressionParser  parser=new SpelExpressionParser();
        Date  date=new Date();  //获取当前日期的年份
        int year=  parser.parseExpression("year").getValue(date,int.class);
        System.out.println(year+1900);
        //获取int类型最大值
        System.out.println(Integer.MAX_VALUE);
        int max=parser.parseExpression("T(java.lang.Integer).MAX_VALUE").getValue(int.class);
        System.out.println(max);
        //求数字之和
        int sum=parser.parseExpression("1+2+3*5").getValue(int.class);
        System.out.println(sum);
        //逻辑运算符 和 boolean值
       boolean  value  =parser.parseExpression("1>2 or 2<3").getValue(Boolean.class);
        System.out.println(value);
    }
}

 

 

  未完待续!!!

 

以上是关于Spring的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot:thymeleaf 没有正确渲染片段

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式