Spring注解驱动开发入门与IOC
1. IOC-Inversion of Control
控制反转,是一种思想,用于消减代码间的耦合
利用工厂设计模式,把创建对象代码从具体类中剥离出
去,交给工厂完成,从而降低代码间的依赖关系
2. DI-Dependency Injection
依赖注入,spring框架IOC的具体实现。
通过控制反转将对象创建交给spring后只是降低他们的依赖关系,但不会消除,
比如业务层仍会调用持久层的方法,这种依赖关系可以交给spring维护,即让框架把持久层对象传入业务层。
3. 注解驱动开发
spring在2.5版本引入了注解配置的支持,同时从Spring 3版本开始,
Spring JavaConfig项目提供的许多特性成为核心Spring框架的一部分。因此,可以
使用Java而不是XML文件来定义应用程序类外部的bean。
在这里面官方文档为我们提供了四个基本注解
@Configuration,@Bean,@Import,@DependsOn
4. 注解驱动入门案例
1.需求:
实现保存一条数据到数据库。
2.表结构:
create table account(
id int primary key auto_increment,
name varchar(50),
money double(7,2)
);
3.要求:
使用spring框架中的JdbcTemplate和DriverManagerDataSource
使用纯注解配置spring的ioc
5. 案例实现
5.1 导入相关maven坐标
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.18.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.18.RELEASE</version>
</dependency>
</dependencies>
5.2 编写配置类
5.2.1 spring配置类
@Configuration
@Import(JdbcConfig.class)
@PropertySource("classpath:jdbc.properties")
public class SpringConfiguration {
}
5.2.2 Jdbc配置类
public class JdbcConfig {
@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("jdbcTemplate")
public JdbcTemplate createJdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean("dataSource")
public DataSource createDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
5.2.3 jdbc配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/spring
jdbc.username=root
jdbc.password=lc20000925
5.3 测试类
public class SpringAnnotationTest {
public static void main(String[] args) {
ApplicationContext app = new AnnotationConfigApplicationContext("config");
JdbcTemplate jdbcTemplate = app.getBean("jdbcTemplate", JdbcTemplate.class);
jdbcTemplate.update("insert into account(name,money) values (?,?)", "liuchun", 5000);
}
}
执行结果
