本章内容是本人学习过程中的记录,所以有些地方有些杂乱,欢迎一起谈论交流~
Bean的作用范围和生命周期相关的注解
bean的作用范围注解
@Scope单例还是非单例模式(singleton、propotype)
控制bean的生命周期的注解
@PostConstruct初始化bean
@PreDestory销毁bean
注解开发——依赖注入
自动装配
@Autowired
@Qualifier
@Value
读取properties文件@PropertySource
@PropertySource({"application.properties"})
@Autowired //代替set方法 @Qualifier("bookDao2") //有多个bean确定指的是哪个 private BookDao bookDao; // public void setBookDao(BookDao bookDao) { // this.bookDao = bookDao; // }//bean中部分代码
@Value("${name}")//name写死要到配properties文件中赋值,再到自己创建的配置文件中注解声明(见下图) //实现简单类型注入 private String name; public void save() { System.out.println("book dao save...."+name); }
第三方bean管理
普通类型直接@Value就可以
引用类型向方法中传递其对应类型参数就可以
两种类型的管理方式有两种分别是导入式和扫描式,推荐导入式(Import)
在config类中写@Import({JdbcConfig.class})导入
public class JdbcConfig {
//定义一个方法获得要管理的对象
//添加@Bean表示当前方法的返回值是一个Bean
@Bean("dataSource")
public DataSource dataSource(){
DruidDataSource ds=new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbd:mysql://localhost:3306/spring_db");
ds.setUsername("root");
ds.setPassword("root");
return ds;
}
}
在APP类中调用
AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class);
DataSource ds=ctx.getBean(DataSource.class);
System.out.println(ds);
导入方式有两种:导入式(Import)和扫描式(ComponentScan)
引用类型注入只需要为Bean定义方法设置形参即可,容器会根据类型自动装配对象。
/**JdbcConfig **/
public class JdbcConfig {
@Value("com.mysql.jdbc.Driver")
private String driver;
@Value("jdbd:mysql://localhost:3306/spring_db")
private String url;
@Value("root")
private String userName;
@Value("root")
private String passWord;
//定义一个方法获得要管理的对象
//添加@Bean表示当前方法的返回值是一个Bean
@Bean("dataSource")
public DataSource dataSource(BookDao bookDao){
System.out.println(bookDao);//引用类型依赖注入
DruidDataSource ds=new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(passWord);
return ds;
}
}
/**BookDaoimpl **/
@Repository("bookDao")
@Scope("singleton")
public class BookDaoimpl implements BookDao {
@Value("${name}")//name写死要到配properties文件中配置,再在配置文件中注解声明
private String name;
public void save() {
System.out.println("book dao save...."+name);
}
}
注解开发总结
功能 | XML配置 | 注解 |
定义bean | bean标签:id属性、class属性 | @Comonent @Controller @Service @Repository @ComponentScan |
设置依赖注入 | setter注入(set方法):引用/简单 构造器注入(构造方法):引用/简单 自动装配 | @Autowired @Qualifier @Value |
配置第三方bean | bean标签 静态工厂、实例工厂、FactoryBean | @Bean |
作用范围 | scope属性 | @Scope |
生命周期 | 标准接口:init-method、destroy-method | @PostContructor @PreDestroy |