26Spring_的注解实际应用_关键整理一下之前的注解

写一个银行转账案例,

案例结构如下:

aaarticlea/png;base64,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" alt="" />

AccountDao是Dao层。Account是数据库的实体类。AccountService是业务层。TestAccount是测试类。applicationContext.xml是Spring的配置文件。

第一步:导jia包:

aaarticlea/png;base64,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" alt="" />

第二步:写实体类:

//对应数据库中的account表
public class Account {
private int id;
private String name;
private double money;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the money
*/
public double getMoney() {
return money;
}
/**
* @param money the money to set
*/
public void setMoney(double money) {
this.money = money;
} }

第三步:写 AccountDao接口:

public interface AccountDao {

//加钱
public void addmoney(String name,double money);
//减钱
public void reducemoney(String name ,double money);
}

第四步:写AccountDao接口的实现类

//继承了JdbcDaoSupport,这样就可以Spring的JDBc的模板
public class AccountDaoimpl extends JdbcDaoSupport implements AccountDao {
public void addmoney(String name, double money) {
String sql="update account set money=money+"+money+"where name=?";
this.getJdbcTemplate().update(sql, name);
} public void reducemoney(String name, double money) {
String sql="update account set money=money-"+money+"where name=?";
this.getJdbcTemplate().update(sql, name); } }

第五步:写转账的接口

/*
* 转账的接口
*/
public interface AccountService {
//转钱
public void transfer(String outAccount,String inAccount,double money); }

第六步:转账接口的实现类

第一种写法:里面的accountDao用set/get方法注入。

public class AccountServiceimpl implements AccountService {

  /**
* 这个类是转账接口的实现类。我们要考虑的问题是怎么把Dao给注入进去。
* 这里用普通的方式(get/set)
*
*
*/ private AccountDao accountDao; /**
* @return the accountDao
*/
public AccountDao getAccountDao() {
return accountDao;
} /**
* @param accountDao the accountDao to set
*/
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
} public void transfer(String outAccount, String inAccount, double money) { accountDao.addmoney(inAccount, money);
accountDao.reducemoney(outAccount, money); } }

第二种写法:里面的accountDao用@AutoWired注解的方式。

public class AccountServiceimpl implements AccountService {

  /**
* 这个类是转账接口的实现类。我们要考虑的问题是怎么把Dao给注入进去。
* 这里用注解的方式 @Autowired。
* 一旦用这种方式,之前那种set/get方式在applicationContext.xml中的
* <bean id="AccountService" class="cn.itcast.service.AccountServiceimpl">
<!-- <property name="accountDao" ref="AccountDao"/> -->
</bean>
里面的property name="accountDao" ref="AccountDao"/>必须去掉。
*
*
*/
@Autowired
private AccountDao accountDao; public void transfer(String outAccount, String inAccount, double money) { accountDao.addmoney(inAccount, money);
accountDao.reducemoney(outAccount, money); } }

第七步:写applicationContext.xml

第一种写法对应(第六步中的第一种写法:里面的accountDao用set/get方法注入)。

<?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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> -->
<!-- 引入peoperties文件 -->
<!-- <context:property-placeholder location="classpath:db.properties"/> -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:db.properties"/>
</bean> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean> <bean id="AccountDao" class="cn.itcast.dao.AccountDaoimpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<bean id="AccountService" class="cn.itcast.service.AccountServiceimpl">
<!--
这里用的是property这种方式,也就是说在AccountServiceimpl这个类里面的accountDao属性
必须要有set方法不然会报错,属性不能注入。 -->
<property name="accountDao" ref="AccountDao"/>
</bean>
</beans>

第二种写法:对应(第六步里面的accountDao用@AutoWired注解的方式。)

<?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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> -->
<!-- 引入peoperties文件 -->
<!-- <context:property-placeholder location="classpath:db.properties"/> -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:db.properties"/>
</bean> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean> <bean id="AccountDao" class="cn.itcast.dao.AccountDaoimpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<bean id="AccountService" class="cn.itcast.service.AccountServiceimpl"> </bean>
</beans>

第八步:写Junit测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class TestAccount {
@Autowired
private AccountService accountService; @Test
public void accounttest()
{ accountService.transfer("aaa", "bbb", 200);
}
}

总结:这里要注意的是:@Autowired这个注解的使用不需要在ApplicationContext.xml中配置bean.只要在AccountServiceimpl中配置了AccountDaoimpl用@Autowired修饰了那么就会根据类型来创建对象。

所以上面的注解形式的流程是:在测试程序中,根据

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")

把ApplicationContext.xml文件引入进来。然后当执行

@Autowired
    private AccountService accountService;

时发现有一个@Autowired注解。马上去bean容器中,在对应的类型匹配的bean注入(spring先找类型为AccountService的bean)。

找到后注入。那么accountService不就有值了吗,然后在创建AccountServiceimpl的过程中。发现里面有一个

@Autowired
    private AccountDao accountDao;

同理Spring马上再去bean容器中寻找类型为AccountDao的bean.找到后注入到accountDao中。那么accountDao就有值了。

解释一下为什么加一句<property name="accountDao" ref="AccountDao"/> 就会报错。

<bean id="AccountService" class="cn.itcast.service.AccountServiceimpl">
<!--
这里用的是property这种方式,也就是说在AccountServiceimpl这个类里面的accountDao属性
必须要有set方法不然会报错,属性不能注入。 -->
<!-- <property name="accountDao" ref="AccountDao"/> -->
</bean>

因为:按照上面的解释是:在测试代理中先看到了@Autowire注解时。再去bean容器中找到相应的类型注入。如果<bean id="AccountService" class="cn.itcast.service.AccountServiceimpl">中还有一个<property name="accountDao" ref="AccountDao"/>,如果用<property 这样的话就必须要用set/get方式,给accountDao注入值。而如果我这里不写这句话,等AccountServiceimpl创建时,发现

@Autowired
  private AccountDao accountDao;

就会再去bean容器中找到相应的类型注入。

上一篇:IIS部署.NET项目的有关事项_2015.07.02


下一篇:Skills - CF613B