1、定义Bean的几种注解
@Component(“id”) : 仅表示Bean对象,可以用在任何层次。
@Service(“id”) : 该注解用于业务逻辑组件类(Service层)
@Repository(“id”) : 用于数据访问层(Dao层)
@Controller(“id”) : 标注一个控制器组件类
以上4种注解功能相同,只是为了区分
2、注解配置类
@Configuration :标注一个配置类
@ComponentScan({“包路径范围1”,“包路径范围2”,…}):配置该配置类,扫描bean所在包的范围。
@PropertySource(“classpath:jdbc.properties”):将properties配置文件加载到配置类中。
@Import({类字节码文件1,类字节码文件1}) : 将配置类导入到核心配置类中,多个数据用数组格式。
实现代码:
@Configuration
@ComponentScan("dao.domain")
public class Springconfig {
}
使用上边的spring配置类进行全注解开发,将不需要xml配置文件,同时获取容器时使用 AnnotationConfigApplicationContext(配置类字节码) 来获取。
实现代码:
ApplicationContext Context = new AnnotationConfigApplicationContext(Springconfig.class);
BookDao bookDao = Context.getBean("bookDao", BookDao.class);
bookDao.show();
3、管理bean的注解
@Scope(“singleton”/“prototype”) :配置bean是单例还是多例,默认singleton(单例)。
@PostConstruct :初始化方法注解。
@PreDestroy :销毁方法注解。
代码实现:
@Component("bookDao")
@Scope //prototype 多例 默认singleton
public class BookDaoImpl implements BookDao {
@Override
public void show() {
System.out.println("hello,spring...");
}
@PostConstruct //初始化方法
public void init(){
System.out.println("bookDao初始化方法注解");
}
@PreDestroy //销毁方法
public void destroy(){
System.out.println("bookDao销毁方法注解");
}
}
@bean用法:我这里可以理解为将方法的返回值作为一个bean对象
代码实现:
@Bean("getDataSource")
public DataSource getDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}