知道每个注解的意思:
|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 注解 | 说明 |
| @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);
}
}
}