Spring注解驱动开发入门与IOC

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>
        <!--druid数据连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!--mysql数据连接驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <!--spring相关-->
        <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配置类
/**
 * spring的配置类
 * 相当于applicationContext.xml
 *
 * @author 刘淳
 */
@Configuration  //标注此类为配置类
@Import(JdbcConfig.class)  //引入Jdbc配置类
@PropertySource("classpath:jdbc.properties")  //引入jdbc配置文件
public class SpringConfiguration {
}
5.2.2 Jdbc配置类
/**
 * Jdbc相关配置类
 *
 * @author 刘淳
 */
public class JdbcConfig {
    //可使用EL表达式取用引入的properties文件的数据
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    /**
     * 创建JdbcTemplate对象,并放入Ioc容器中
     *
     * @param dataSource 数据源对象
     */
    @Bean("jdbcTemplate")
    public JdbcTemplate createJdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    /**
     * 创建数据源,并放入Ioc容器
     */
    @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 测试类
/**
 * 注解驱动开发入门测试
 *
 * @author 刘淳
 */
public class SpringAnnotationTest {
    public static void main(String[] args) {
        // 1.获取容器(基于注解方式)
        ApplicationContext app = new AnnotationConfigApplicationContext("config");  // 会扫描该包下带Configuration注解的类
        // 2.根据Bean id获取对象
        JdbcTemplate jdbcTemplate = app.getBean("jdbcTemplate", JdbcTemplate.class);
        // 3.执行操作
        jdbcTemplate.update("insert into account(name,money) values (?,?)", "liuchun", 5000);
    }
}
执行结果

image-20211109135638929

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@未安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值