- @Configuration
作用:就是用来替代spring的xml文件
被该注解标记的类,是spring的一个主配置类,当容器创建的时候会从该类上加载注解
- @ComponentScan
作用:就是用来进行组件扫描
等价与:<context:component-scan base-package=“com.zhiyou100”>
被该注解标记的类可以进行组件扫描,使用value属性来识别包名
- @PropertySource
作用:就是用来导入db.properties数据源文件到Spring容器中
等价于:<context:properties-placeholder location=“classpath:db.properties”>
- @Bean
作用:用来在Spring容器中构建对象
等价于<bean id=“dataSource” class=“com.mchange.v2.c3p0.ComboPooleDataSource”>
- @Import
作用:就是用来引入其他配置文件
等价于:<import resource=“classpath:xx.properties(xml)”>:
1、导包(在pom文件中编写jar包依赖)
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
2、编写jdbc工具类DBUtil配置代码如下:
/**
* 配置连接池 连接 工具类等信息
*/
@Component
public class JDBCUtil {
@Value("${jdbc.driverClass}")
private String driverClass;
@Value("${jdbc.jdbcUrl}")
private String jdbcUrl;
@Value("${jdbc.user}")
private String user;
@Value("${jdbc.password}")
private String password;
//假定使用c3p0连接池
/**
* 配置数据源
* 采用数据库连接池 依赖于数据源DataSource ComboPooledDataSource
* 把ComboPooledDataSource该对象注入到Spring到容器中
* <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
* <property name="driverClass" value="${jdbc.driverClass}"/>
* <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
* <property name="user" value="${jdbc.user}"/>
* <property name="password" value="${jdbc.password}"/>
* </bean>
*/
//创建ComboPooledDataSource对象进入Spring对象容器中0
@Bean(name = "dataSource")
public DataSource getDataSource(){
//构建ComboPooledDataSource对象 手动注入数据源信息
ComboPooledDataSource dataSource = new ComboPooledDataSource();
try {
dataSource.setDriverClass(driverClass);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setUser(user);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "jdbcTemplate")
public JdbcTemplate createJdbcTemplate(@Autowired DataSource dataSource){
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
}
4、编写spring主配置类信息如下:
/**
* Spring的主配置类
* 注解意思 同上有解释说明
*/
@Configuration
@ComponentScan("com.zhiyou100")
@PropertySource("classpath:db.properties")
@Import(JDBCUtil.class)
public class SpringConfiguration {
}
5、编写dao接口以及dao层接口实现类
/*dao层接口示例代码如下*/
public interface UserDao {
//CRUD
//添加用户
void addUser(User user);
}
/*dao层接口实现类示例代码如下*/
/*将此类交给Spring容器管理*/
@Repository("userDao")
public class UserDaoImpl implements UserDao {
/*属性注入jDBCTemplate对象 将spring中的对象取出*/
@Autowired
private JdbcTemplate jdbcTemplate;
@Override//添加用户信息
public void addUser(User user) {
int update = jdbcTemplate.update("insert into user values(null,?,?,?)", user.getU_name(), user.getU_age(), user.getU_salary());
if (update>0){
System.out.println("添加成功");
}
}
}
6、使用Junit单元测试,示例代码如下
@RunWith(SpringJUnit4ClassRunner.class)/**在测试类上面添加注解@RunWith(SpringJUnit4ClassRunner.class) 该SpringJUnit4ClassRunne类由它帮我们创建Spring容器*/
@ContextConfiguration(classes = SpringConfiguration.class)/*加载Spring主配置类*/
public class UserTest {
@Autowired
private UserDao userDao;
@Autowired
private User user;
@Test//添加用户信息
public void testAddUser(){
userDao.addUser(user);
}
}
结果如下: