一、注解开发bean作用范围
使用@Scope定义bean作用范围
@Repository //@Scope设置bean的作用范围 @Scope("singleton") public class BookDaoImpl implements BookDao { }
注解Scope定义为singleton为单例模式,定义为prototype为非单例模式。
二、注解开发bean生命周期
使用@PostConstruct,@PreDestroy定义bean生命周期
@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 ..."); } }
三、注解开发依赖注入
Spring注解开发是为了加速开发的,对应原始功能做了一些阉割。
自动装配
使用@Autowired注解开启自动装配模式(按类型)
@Service public class BookServiceImpl implements BookService { //@Autowired:注入引用类型,自动装配模式,默认按类型装配 @Autowired private BookDao bookDao; public void save() { System.out.println("book service save ..."); bookDao.save(); } }
注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
注意:自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法
使用@Qulifier注解开启指定名称装配bean
@Service public class BookServiceImpl implements BookService { //@Autowired:注入引用类型,自动装配模式,默认按类型装配 @Autowired //@Qualifier:自动装配bean时按bean名称装配 @Qualifier("bookDao") private BookDao bookDao; }
注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
使用@Value实现简单类型注入
@Repository("bookDao") public class BookDaoImpl implements BookDao { //@Value:注入简单类型(无需提供set方法) @Value("100") private String name; }
四、注解开发加载properties文件
使用@PropertySource注解加载properties文件
@Configuration @ComponentScan("com.itheima") //@PropertySource加载properties配置文件 @PropertySource({"jdbc.properties"}) public class SpringConfig { }
注意:路径仅支持单一文件配置,多文件请使用数组格式配置,不允许使用通配符*