• 疑问:@Autowired的作用?[待解答]


    有下面一个Spring的工程,工程结构如下:

    代码如下:

    applicationContext.xml:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:jdbc="http://www.springframework.org/schema/jdbc"
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     7         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
     8         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd">
     9 
    10     <!-- 配置自动扫描 -->
    11     <context:component-scan base-package="com.tt.spring"></context:component-scan>
    12     
    13     <!-- 导入资源文件 -->
    14     <context:property-placeholder location="classpath:db.properties"/>
    15     
    16     <!-- 配置C3P0数据源 -->
    17     <bean id="dataSource"
    18           class="com.mchange.v2.c3p0.ComboPooledDataSource">
    19           <property name="user" value="${jdbc.user}"></property>  
    20           <property name="password" value="${jdbc.password}"></property>
    21           <property name="driverClass" value="${jdbc.driverClass}"></property>
    22           <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    23           
    24           <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
    25           <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    26     </bean>
    27     
    28     <!-- 配置Spring的JdbcTemplate -->
    29     <bean id="jdbcTemplate"
    30           class="org.springframework.jdbc.core.JdbcTemplate">
    31           <property name="dataSource" ref="dataSource"></property>
    32     </bean>
    33     
    34     <!-- 配置 NamedParameterJdbcTemplate,该对象可以使用具名参数,其没有无参数的构造器,所以必须为其构造器指定参数-->
    35     <bean id="namedParameterJdbcTemplate" 
    36           class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
    37           <constructor-arg ref="dataSource"></constructor-arg>
    38     </bean>
    39 
    40 </beans>

    db.properties:

    1 jdbc.user=root
    2 jdbc.password=1234
    3 jdbc.driverClass=com.mysql.jdbc.Driver
    4 jdbc.jdbcUrl=jdbc:mysql://localhost:3306/spring
    5 
    6 jdbc.initPoolSize=5
    7 jdbc.maxPoolSize=10

    DepartmentDao.java:

    EmployeeDao.java:

     JdbcTest.java:

    疑问:

    1.为什么在EmployeeDao类里面对JdbcTemplate进行@Autowired,就可以使用jdbcTemplate对象了?而JdbcTest.java类里必须通过ctx获取bean的方式获取到
    jdbcTemplate对象?如果在JdbcTest.java类里直接@Autowired对jdbcTemplate进行自动装配,运行会报错:空指针异常,为什么会这样?
    2.为什么在EmployeeDao里面对jdbcTemplate进行@Autowired自动转配,就可以调用jdbcTemplate呢?

    3.
    @Autowired到底什么作用?
  • 相关阅读:
    JavaScript界面传值与前后台互调
    @requestBody注解的使用
    mybatis动态sql中foreach标签的使用
    mybatis动态SQL中的sql片段
    mybatis动态sql中where标签的使用
    mybatis动态sql中的trim标签的使用
    mybatis动态SQL中的set标签的使用
    SQL-join(inner join)、left join、right join、full join
    Oracle-distinct()用法、count(distinct( 字段A || 字段B))是什么意思?distinct多个字段
    Oracle-where exists()、not exists() 、in()、not in()用法以及效率差异
  • 原文地址:https://www.cnblogs.com/TTTTT/p/6429131.html
Copyright © 2020-2023  润新知