I want to make big money.|

2022-9-20 Spring学习笔记

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>
      

本文作者:(≧∇≦)(≧∇≦)(≧∇≦)

本文链接:https://www.cnblogs.com/gycddd/p/16712633.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   (≧∇≦)(≧∇≦)(≧∇≦)  阅读(14)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起