Spring配置使用註解注入bean

勿在浮沙築高臺LS發表於2016-12-10

前面的Spring之IOC講述的是在配置檔案裡面配置注入bean,在這裡我們使用註解的方式來注入bean。
配置檔案配置如下:

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd
                        http://www.springframework.org/schema/tx 
                        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    ">

    <!-- c3p0資料庫連線池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        destroy-method="close">
        <!-- 資料庫基本資訊配置 -->
        <property name="url" value="jdbc:oracle:thin:@192.168.1.234:1521:ORCL" />
        <property name="username" value="LS" />
        <property name="password" value="LS" />
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    </bean>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- <bean id="pathWayDaoImp" class="com.winning.dm.dao.PathWayDaoImp">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>
    <bean id="pathWayService" class="com.winning.dm.service.PathWayService">
        <property name="pathWayDaoImp" ref="pathWayDaoImp"></property>
    </bean> -->
    <context:annotation-config></context:annotation-config>
    <context:component-scan base-package="com.winning"></context:component-scan>

</beans>

裡面只注入了dataSource和jdbcTemplate兩個bean。
下面我們注入dao,實驗程式碼如下:

//
@Component
public class PathWayDaoImp extends JdbcDaoSupport implements IPathWayDao {
    private static Logger logger = Logger.getLogger(PathWayDaoImp.class);

    @Autowired
    public PathWayDaoImp(JdbcTemplate jdbcTemplate) {
        super.setJdbcTemplate(jdbcTemplate);
    }

@Autowired和@Component兩個標籤可以使用
@Autowired可以對成員變數、方法和建構函式進行標註,來完成自動裝配的工作。
@component (把普通pojo例項化到spring容器中,相當於配置檔案中的)
下面展示service呼叫dao使用bean的程式碼:

@Service
public class PathWayService {

    public PathWayDaoImp pathWayDaoImp;

    @Resource(name = "pathWayDaoImp")
    public void setPathWayDaoImp(PathWayDaoImp pathWayDaoImp) {
        this.pathWayDaoImp = pathWayDaoImp;
    }

@Resource(name = “pathWayDaoImp”)和@Service
@Service用於標註業務層元件
@Resource(name = “pathWayDaoImp”)與@Autowired功能類似。

相關文章