首页 > 技术文章 > Spring学习笔记

-jiandong 2020-05-09 11:23 原文

1:使用构造函数<constructor-arg/>时,实体类需要有参构造,无参构造可有可无

  • 报错:Could not resolve matching constructor

 

2:使用setter的DI注入时,可有可无 有参无惨构造。

  • 默认调用无参构造。

  • 只要是DI注入的方式,在调用了ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");之后,在bean.xml下的所有DI,都会调用该类下的无参构造(无论以后调不调用getbean()方法)

  •  

  •  

  • 当为这种情况时,有构造器方式,

    •   

       

        

3:使用注解实现自动装配(@Autowired与@Resource)

  • bean里面不再需要autowire="byType"或 autowire="byName",更加简洁

    1. 导入context约束:

      xmlns:context=http://www.springframework.org/schema/context

      http://www.springframework.org/schema/context

      https://www.springframework.org/schema/context/spring-context.xsd

    2. 配置注解支持:context:annot-config/

    3. 使用@Autowired:

      直接在属性上使用即可!也可以在set方式上使用!使用Autowired我们可以不用编写Set方法了,前提是你这个自动装配的属性在IoC(Spring)容器中存在,且符合名字byName!跟@Qualifier(value="xxx")配合使用,当有多个bean的类型相同,而id都不与属性名字相同时,人为选择一个

       

      @Resource和@Autowired的区别:

       

      - 都是用来自动装配的,都可以放在属性字段上;

      - @Autowired通过byType的方式实现,而且必须要求这个对象存在!【常用】

      - @Resource默认通过byName的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错!

      - 执行顺序不同:@Autowired通过byType的方式实现,@Resource默认通过byName的方式实现。

       

       

4、代理模式即为不改变原有业务的基础上扩展业务

 

5、spring与mabatis整合jar包

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
<!--            <version>5.1.46</version>-->
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <!--spring操作数据库的话,还需要一个spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.13</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>


    </dependencies>


    <!--在build中配置resources,来防止我们资源导出失败的问题-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
pom

 

推荐阅读