day6 spring纯注解开发

接下来讲解spring'框架的简化开发的结构---纯注解开发模式

即使用注解代替bean配置

在类定义中引入注解

@Component("bookDao")//引入注解,同时指定其在bean配置的id,相当于简化了bean配置
public class BookDaoImpl implements BookDao {


    public void save() {
        System.out.println("book dao save ...");

    }
    
}

而在配置文件中,则需要扫描导入注解

<context:component-scan base-package="com.itheima"/>

这行代码就是导入了/com/itheima目录下的所有注解,支持多注解导入

于是在bookserviceimpl中也可以使用注解来引入

同时,spring为了方便区分业务层类,操作层类等,提供了不同的component衍生类,和componnet类功能相同,只是名称不同

对于bookserviceimpl可以使用@Service(dao可以使用@Repository),可以不指定id,后面按类型获取

@Service
public class BookServiceImpl implements BookService {
    private BookDao bookDao;



    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}
BookService bookService = (BookService) ctx.getBean(BookService.class);

关于注解开发的生命周期,和bean配置类似

1.作用范围---单例与多例(singleton and protodo)

可以使用@Scope来指定

2.初始化与销毁方法

在类中写上方法,同时使用@PostConstruct和@PreDestroy来注解

类的定义

package com.itheima.dao.impl;

import com.itheima.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Repository
//@Scope设置bean的作用范围
@Scope("singleton")
public class BookDaoImpl implements BookDao {

    public void save() {
        System.out.println("book dao save ...");
    }
    //@PostConstruct设置bean的初始化方法
    @PostConstruct
    public void init() {
        System.out.println("init ...");
    }
    //@PreDestroy设置bean的销毁方法
    @PreDestroy
    public void destroy() {
        System.out.println("destroy ...");
    }

}

引入其他类

注解引入别人写的类时,我们可以通过这样的模式,定义SpringConfig类来充当配置文件

package com.itheima.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@ComponentScan("com.itheima")
public class SpringConfig {
}

这里也可以使用扫描,然后我们再定义一个引入其他类的类文件jdbcConfig类

package com.itheima.config;

import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;

public class jdbcConfig {
    @Bean//使用@bean来进行注解
    public DataSource dataSource(){
        DruidDataSource ds=new DruidDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jbnc:mysql://localhost:3306/spring_db");
        ds.setUsername("root");
        ds.setPassword("root");

        return ds;
    }
}

这里其实还可以使用

@Import(jdbcConfig.class)来精确引入

第三方bean的注解注入

引入类

引用类型注入比较简单,spring框架可以智能识别形参引入类

下图可以看出,注解开发确实方便许多

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值