spring5整理:(十)JavaConfig配置

15 篇文章 0 订阅

1.domain配置Employee实体类

2.dao接口及其实现类

public interface IAccountDAO {

    /**
     * 从指定帐户转出多少钱
     * @param outId
     * @param money
     */
    void transOut(Long outId,int money);
    
    /**
     * 从指定帐户转入多少钱
     * @param inId
     * @param money
     */
    void transIn(Long inId,int money);
}
@Repository
public class AccountDAOImpl implements IAccountDAO {

    private JdbcTemplate jdbcTemplate;
    
    @Autowired
    public void setDataSource(DataSource ds) {
        this.jdbcTemplate = new JdbcTemplate(ds);
    }
    
    @Override
    public void transOut(Long outId, int money) {
        System.out.println("outId:"+outId+",money:"+money);
        this.jdbcTemplate.update("update account set balance = balance - ? where id=?", money,outId);

    }

    @Override
    public void transIn(Long inId, int money) {
        System.out.println("inId:"+inId+",money:"+money);
        this.jdbcTemplate.update("update account set balance = balance + ? where id=?", money,inId);

    }

}

实现类添加注解:@Repository

3.service接口及实现类

public interface IAccountService {
    /**
     * 从指定帐户转出另一个帐户多少钱
     * @param outId
     * @param inId
     * @param money
     */
    void trans(Long outId,Long inId,int money);
}

 

@Service
@Transactional
public class AccountServiceImpl implements IAccountService {

    @Autowired
    private IAccountDAO dao;

    
    @Override
    public void trans(Long outId, Long inId, int money) {
        //转出
        this.dao.transOut(outId, money);
        //转入
        int a = 1/0;//模拟异常
        this.dao.transIn(inId, money);

    }

}

实现类添加@Service,@Transactional,并注入dao

4.根目录添加当前项目连接池的配置

@Configuration
@PropertySource("classpath:db.properties")
public class DataSourceConfig {
    
    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    
    @Value("${jdbc.url}")
    private String url;
    
    @Value("${jdbc.username}")
    private String username;
    
    @Value("${jdbc.password}")
    private String password;
    
    @Value("${jdbc.initialSize}")
    private int initialSize;
    
    //创建连接池Bean
    //<bean id="dataSource" class="">
    @Bean
    public DataSource dataSource() {
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driverClassName);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        ds.setInitialSize(initialSize);
        return ds;
    }

}

5.根目录添加项目的主配置类 AppConfig.java

@Configuration  //标记当前类为一个配置类
@Import(DataSourceConfig.class)  //包含其他的配置类
@ComponentScan //默认扫描当前所在的包及子包   IOC注解解析
@EnableTransactionManagement //事务注解解析器
public class AppConfig {
    
    //创建事务管理器的Bean,参数所需的DataSource ds,spring会自动在整个IOC容器中找,并注入进去
    @Bean
    public DataSourceTransactionManager txManager(DataSource ds) {
        return new DataSourceTransactionManager(ds);
    }

}

6.测试代码

@SpringJUnitConfig(classes=AppConfig.class)
public class App {
    
    @Autowired
    private IAccountService service;
    
    @Test
    void testTrans() {
        service.trans(10002L, 10010L, 100);
    }
}

企业中的选择

 Spring Ioc容器通过读取配置文件中的配置元数据,通过数据对应用中的各个对象进行实例化及装配。

元数据的配置有三种方式:

1.XML配置

2.注解配置

3.java代码配置

企业中直接使用XML配置越来越少了,更多是

1.注解

2.ML+注解

3.XML+注解+java配置

4.注解+java配置 (SpringBoot框架倾向)

 

源码下载

 

上一篇:spring5整理:(九)事务 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值