首页 > 其他分享 >2022-9-20 Spring学习笔记

2022-9-20 Spring学习笔记

时间:2022-09-20 21:34:05浏览次数:67  
标签:类型转换 set 20 Spring bean 2022 注解 赋值

目录

1.Spring

Spring框架是Java应用最广泛的框架,成功来源于理念,而不是技术本身

  • IOC:控制反转
  • AOP:面向切面编程
  • DI:依赖注入

非侵入式设计:无需继承框架提供的任何一个类,更换框架,代码基本上不需要大改。

1.1 JavaBean

springbean是JavaBean的扩展

  • 现在的JavaBean作为对象,要求每个属性提供set,get方法。
  • spring的bean只需要为接受设置的值的注入提供set方法。

1.2 Spring的优势

  • 低侵入/低耦合
  • 声明式事务(基于AOP)
  • 方便继承其他的框架
  • 提供了JavaWEB三层的每一层的解决方案

1.3 将对象放入IOC容器

配置类

把对象放进容器中,对象一旦放入容器中,这个对象在我当前的项目中就可以共享,而且默认还是单例的

<!--
    id:这个对象在IOC容器中的唯一标识
    class:要放到spring的IOC容器的全类名
-->
<bean id="address" class="com.jsoft.entity.Address" ></bean>

赋值的方法

  • 根据参数名字赋值

    •     <constructor-arg name="name" value="哇哈哈"></constructor-arg>
      
  • 根据参数索引赋值

    • 	<constructor-arg index="0"  value="哇哈哈"></constructor-arg>
      
  • 根据参数类型赋值

    • 	<constructor-arg type="java.lang.String"  value="哇哈哈"></constructor-arg>
      
  • 根据set方法赋值

    •     <property name="name" value="哇哈哈"></property>
      
    • 必须有set方法

根据不同类型的赋值

    • <!--        类对象 ref:依赖当使用ref属性,依赖于当前容器中已存在的bean,进行属性注入-->
              <property name="address" ref="address"/>
      
  • 数组

    • <property name="hobbies">
          <array value-type="java.lang.String">
              <value>足球</value>
              <value>篮球</value>
          </array>
      </property>
      
  • List集合

    • <property name="duties">
          <list value-type="java.lang.String">
              <value>球球</value>
              <value>猫猫</value>
          </list>
      </property>
      
  • Set集合

    • <property name="carts">
          <set value-type="java.lang.String">
              <value>韭菜</value>
              <value>花生米</value>
          </set>
      </property>
      
  • Map集合

    • <property name="map">
          <map key-type="java.lang.String" value-type="java.lang.String">
              <entry key="父亲" value="马云"></entry>
              <entry key="儿子" value="赖"></entry>
          </map>
      </property>
      
  • properties属性

    • <property name="properties">
          <props>
              <prop key="阿里版本">扫地僧</prop>
          </props>
      </property>
      

作用域

scope:定义bean的作用域

自动装配

autowire:根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类

型属性赋值

  • 开启自动装配注解

    • <!--   base-package:这个包下的类自动装配-->
          <context:component-scan base-package="com.jsoft.entity"></context:component-scan>
      
  • 自动装配的注解

    • 	@Autowired
      	@Qualifier("bean的id")
          @Resource -- 推荐  
      
    • @Resource注解的依赖

      •     <dependency>
                 <groupId>javax.annotation</groupId>
                 <artifactId>javax.annotation-api</artifactId>
                 <version>1.2</version>
             </dependency>
        

注解

  • @Component
    • (和@Service和@Repository)用于自动检测和使用类路径扫描自动配置bean
  • @Bean
    • 用于显式声明单个bean,而不是让Spring像上面那样自动执行它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。
    • @Bean则常和@Configuration注解搭配使用,都可以使用@Autowired或者@Resource注解注入。

1.4类型转换

将String类型转换成Date类型

  • 继承Converter接口,定义泛型String,Date

  • 实现convert方法

    • public class StringToDateConverter implements Converter<String,Date> {
          @Override
          public Date convert(String source) {
              SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd HH-mm-ss");
              try {
                  return format.parse(source);
              } catch (ParseException e) {
                  throw new RuntimeException();
              }
          }
      }
      
  • 在xml文件里注册

    •    <bean id="converter" class="com.jsoft.converter.StringToDateConverter">
          </bean>
      
  • 注册Spring自带的类型转换,将converter放入

    •     <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
              <property name="converters">
                  <set value-type="com.jsoft.converter.StringToDateConverter">
                  <ref bean="converter"></ref>
                  </set>
              </property>
          </bean>
      

标签:类型转换,set,20,Spring,bean,2022,注解,赋值
From: https://www.cnblogs.com/gycddd/p/16712633.html

相关文章

  • CF1720E Misha and Paintings 题解
    神仙2700。首先统计出原数组中不同元素个数记作\(cnt\),如果\(cnt\lek\)说明元素个数不够,由于一次只能加一个颜色因此答案就是\(k-cnt\)。然后接下来要证明一个结论......
  • [NOIP2000 提高组] 单词接龙
    [NOIP2000提高组]单词接龙题目背景注意:本题为上古NOIP原题,不保证存在靠谱的做法能通过该数据范围下的所有数据。题目描述单词接龙是一个与我们经常玩的成语接龙相......
  • 2022..9.20
    IDEA安装IDEA官网:https://www.jetbrains.com/什么是IDE:IDE中文名:集成开发环境用于提供程序开发环境的应用程序关键单词关键字 标识符注意点1.所有标识首字母只能以......
  • NOIP 2021
    报数(黄)小清新筛子签到题点击查看代码#include<cstdio>#include<cstring>#include<cctype>#include<cstdlib>#include<cmath>#include<complex>#include......
  • 2022-08-30 第二小组 张鑫 学习笔记
    实训五十二天Servlet学习内容HttpServletRequest//请求  所有和请求相关的操作  当请求来的时候,request就被实例化HttpServletResponse//响应  所有和......
  • 9.20水题大赏
    2022-9-20T1:扫雷一眼看上去是一个DP题,但通过观察样例以及自己列举数据可以发现,若整个矩阵的第一个已确定是否有雷,那么整个矩阵都可以确定了。因此所有情况只可能有\(0\)......
  • Test 2022.09.20
    2022年9月20日的测试(SCOI2005专场)T1扫雷思考起来很简单,对于任意一个输入的\(a[i]\),它会约束的格子只有\(i-1,i,i+1\)三个,也就是只要算出当前在\(i-1,i\)位置摆放的情......
  • P7076 [CSP-S2020] 动物园
    [CSP-S2020]动物园题目描述动物园里饲养了很多动物,饲养员小A会根据饲养动物的情况,按照《饲养指南》购买不同种类的饲料,并将购买清单发给采购员小B。具体而言,动物世......
  • 20220920祭
    20220920t1[SCOI2005]扫雷最初思路显然,对于数值为3或0的格子只有一种情况。考虑从已经确定的摆放情况向周围拓展,直至无法拓展。此时就将所有可以确定的摆放确定,最后只......
  • 2022-2023-1 第三周学习总结
    作业地址:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03第一周作业:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03提交情况如图:作业要求:1.学......