Spring 的纯注解配置

知道每个注解的意思:

|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 注解 | 说明 |
| @Configuration | 用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解,作用等价于applicationContext.xml 配置文件。 |
| @ComponentScan | 用于指定 Spring在初始化容器时要扫描的包。 作用和在 Spring 的 xml 配置文件中的 <context:component-scan base-package="com.sy"/>一样 |
| @Bean | 使用在方法上,标注将该方法的返回值存储到 Spring容器中。 id的值默认是方法的明名称,可以自定义id的值 |
| @PropertySource | 用于加载xxx.properties 文件中的配置结合 @Value("${}") 取配置文件的值。作用类似于:<context:property-placeholder location="classpath:db.properties"></context:property-placeholder> |
| @Import | 用于导入其他配置类 |

定义一个配置类:SpringConfig

java 复制代码
/*普通类变成配置类 需要在类上添加@Configuration*/

/*配置类注解*/ /*这个类是配置类*/
@Configuration
/*包扫描注解   <context:component-scan base-package="com.study"></context:component-scan>*/
@ComponentScan(basePackages = "com.study")
/*导入其他配置类*/
@Import(DataSourceConfig.class)
public class SpringConfig {
}

数据库连接信息配置类:DataSourceConfig

java 复制代码
/*
* 数据库连接信息配置类
* */
//加载配置文件
@PropertySource("classpath:db.properties")
public class DataSourceConfig {

    /*
    *   <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>*/
    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    /*配置数据源对象*/
    @Bean
    public DataSource dataSource() throws Exception {
        /*创建数据库连接池*/
        ComboPooledDataSource source = new ComboPooledDataSource();
        /*把文件赋予变量的值  赋到连接池的属性中*/
        source.setDriverClass(driver);
        source.setJdbcUrl(url);
        source.setUser(username);
        source.setPassword(password);
        return source;
    }

    /*
    *           <!--配置jdbcTemplate模板对象-->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <!--将数据源交给jdbcTemplate模板对象-->
            <property name="dataSource" ref="dataSource"></property>
        </bean>*/
    @Bean
    public JdbcTemplate jdbcTemplate(@Autowired @Qualifier("dataSource") DataSource dataSource){
        /*它是一个数据访问抽象层,为使用JDBC进行数据库操作提供了便利*/
        return new JdbcTemplate(dataSource);
    }
}

持久层:

java 复制代码
@Repository("accountDao")
public class AccountDaoImpl implements AccountDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /*
    *查询全部账户信息
    * */
    @Override
    public List<Account> findAllAccounts() {
        String sql="select * from account";
        return jdbcTemplate.query(sql,new BeanPropertyRowMapper<Account>(Account.class));
    }
}
业务层:
java 复制代码
@Service("accountService")
public class AccountServiceImpl implements AccountService {
    @Autowired
    private AccountDao accountDao;

    @Override
    public List<Account> findAllAccounts() {
        return accountDao.findAllAccounts();
    }
}

方法测试可以用spring 和junit整合:

java 复制代码
/*将 Spring 和 Junit 链接了起来*/
@RunWith(SpringJUnit4ClassRunner.class)
/*配置类*/
@ContextConfiguration(classes = SpringConfig.class)
public class AccountController {
    /*实例化对象*/
    @Autowired
    private AccountService accountService;

    @Test
    public void findAllAccountsTests(){
        List<Account> accounts = accountService.findAllAccounts();
        for (Account account : accounts) {
            System.out.println(account);
        }
    }
}
相关推荐
AskHarries10 分钟前
做国内还是出海
后端
J2虾虾15 分钟前
Spring AI Alibaba文档
java·人工智能·spring
YikNjy22 分钟前
break和continue
java·开发语言·算法
SomeOtherTime23 分钟前
Geojson相关(AI回答)
java·前端·python
日月云棠35 分钟前
10 Integer —— 最常用的整数包装类深度解析
java·后端
大鸡腿同学39 分钟前
大模型为何总 “胡说八道”?做完 RAG 知识库,我看懂了它的底层逻辑
后端
秋939 分钟前
java项目中cpu飙升排查及解决方法
java·开发语言
Elastic 中国社区官方博客40 分钟前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless
野生技术架构师40 分钟前
牛客网2026最新大厂Java高频面试题精选(附标准答案)
java·开发语言
PH = 743 分钟前
JAVA的SPI机制
java·开发语言