博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不使用配置文件实现注解
阅读量:3941 次
发布时间:2019-05-24

本文共 3461 字,大约阅读时间需要 11 分钟。

SpringConfig

package cn.qut.config;import org.springframework.context.annotation.*;/**        * 该类是一个配置类,它的作用和bean.xml是一样的        * spring中的新注解        * Configuration        *     作用:指定当前类是一个配置类        *     细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。        * ComponentScan        *      作用:用于通过注解指定spring在创建容器时要扫描的包        *      属性:        *          value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。        *                 我们使用此注解就等同于在xml中配置了:        *                      
* Bean * 作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中 * 属性: * name:用于指定bean的id。当不写时,默认值是当前方法的名称 * 细节: * 当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。 * 查找的方式和Autowired注解的作用是一样的 * Import * 作用:用于导入其他的配置类 * 属性: * value:用于指定其他配置类的字节码。 * 当我们使用Import的注解之后,有Import注解的类就父配置类,而导入的都是子配置类 * PropertySource * 作用:用于指定properties文件的位置 * 属性: * value:指定文件的名称和路径。 * 关键字:classpath,表示类路径下 *///@Configuration@Configuration@ComponentScan("cn.qut")@Import(jdbcConfig.class)@PropertySource("classpath:jdbcConfig.properties")public class SpringConfig {
}
public class jdbcConfig {
//Spring的EL表达式 @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; /** * 用于创建一个QueryRunner对象,并添加到IOC容器中 * @param dataSource * @return */ @Bean(name="runner") @Scope("prototype") public QueryRunner createQueryRunner(@Qualifier("ds") DataSource dataSource){
return new QueryRunner(dataSource); } /** * 创建数据源对象 * @return */ @Bean(name="ds") public DataSource createDataSource(){
try {
ComboPooledDataSource ds = new ComboPooledDataSource(); ds.setDriverClass(driver); ds.setJdbcUrl(url); ds.setUser(username); ds.setPassword(password); return ds; }catch (Exception e){
throw new RuntimeException(e); } }}

测试类

package cn.qut.dao;import cn.qut.config.SpringConfig;import cn.qut.enity.Account;import cn.qut.service.IAccountService;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.List;import static org.junit.Assert.*;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = SpringConfig.class)public class IAccountDaoTest {
//直接使用了ApplicationContext的实现子类,要不然只能使用父类中定义过的方法 private AnnotationConfigApplicationContext as; private IAccountService accountService; @Before public void init(){
//这句可以省略配置类中的@Configuration as = new AnnotationConfigApplicationContext(SpringConfig.class); accountService = (IAccountService) as.getBean("accountService"); } @Test public void findAllAccount() {
List
accounts = accountService.findAllAccount(); for (Account a : accounts ) {
System.out.println(a); } }}

在这里插入图片描述

转载地址:http://wjiwi.baihongyu.com/

你可能感兴趣的文章
细品 - 逻辑回归(LR)*
查看>>
hive: size与spilt连用
查看>>
Python:ModuleNotFoundError: No module named 模块名 错误及解决方案
查看>>
Python中os与sys两模块的区别
查看>>
nohup详解
查看>>
idea .gitignore对.idea不起作用解决
查看>>
深度学习中的注意力机制(2017版)-易理解
查看>>
Transformer解析-易理解
查看>>
多维数组[:,0]和[:0:1]获取的区别
查看>>
复原Ip地址
查看>>
重建二叉树
查看>>
二叉树根节点到叶子节点的路径数字之和
查看>>
根节点到叶子节点的节点值之和等于 sum的路径
查看>>
判断二叉树是否有从根节点到叶子节点的节点值之和等于sum的路径
查看>>
反转字符串
查看>>
环形链表
查看>>
删除链表的倒数第N个节点
查看>>
回文链表
查看>>
容器盛水问题
查看>>
滑动窗口最大值
查看>>