Spring3.0启用了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道
Java类代替Spring核心配置文件,
配置类(@Configuration)
- @Configuration注解用于设定当前类为配置类
- @ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请采用数组格式
// 扫描多个路径下的Bean
@ComponentScan({"com.itheima.service", "com.itheima.dao"})
// 扫面单个路径下的所有Bean
@ComponentScan("com.itheima")
再java文件里加载配置类初始化容器
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = (BookDao) ctx.getBean("bookDao");System.out.println(bookDao);bookDao.save();
Bean管理
作用范围
使用@Scope定义bean作用范围,单例(Singleton,java的main函数里面要用AnnotationConfigApplicationContext来接收加载的容器对象,这样AnnotationConfigApplicationContext.close();才会执行)、非单例(Prototype)
@Repository
@Scope("singleton")
public class BookDaoImpl implements BookDao {
}
生命周期管理
使用@PostConstruct(构造方法后执行)、@PreDestroy(销毁前)定义bean生命周期。
@Scope("singleton") // 单例
@Repository("bookDao")
public class BookDaoImpl implements BookDao {public void save(){System.out.println("book dao save ...");}@PostConstruct // 构造方法后执行public void init(){System.out.println("init ...");}@PreDestroy // 销毁前public void destory(){System.out.println("destory ...");}
}
依赖注入
@Autowired:用于自动装配 bean。它可以用在构造函数、方法或属性上,Spring 会根据类型自动注入对应的 bean 实例。
使用@Qualifier注解:开启指定名称装配bean,如果你有多个实现 BookDao
接口的 bean,可以使用 @Qualifier
选择特定实现类。
@Service
public class BookServiceImpl implements BookService { @Autowired @Qualifier("bookDao") private BookDao bookDao;
}
注意:@Qualifier注解无法单独使用,必须结合@Autowired注解使用
使用@Value实现简类型注入
@Repository("bookDao")
public class BookDaoImpl implements BookDao { @Value("100") private String connectionNum;
}
如果要添加的为properties文件(如下),那么
// 配置文件里
@Configuration
// 读取jdbc.properties,如果PropertySource要读取多个,那么也像ComponentScan一样用大括号
@PropertySource("jdbc.properties")
@ComponentScan("com.itheima")
public class SpringConfig {
}// 注入属性@Value("${name}")String name;
xml配置和注解配置比较
标红的为以后经常使用的