第三方bean管理
使用@Bean配置第三方bean
@Configuration
public class SpringConfig {
//1.定义一个方法获得要管理的对象
//2.添加@Bean,表示当前方法的返回值是一个bean
@Bean
public DataSource dataSource (){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.driver");
ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
ds.setUsername("root");
ds.setPassword("root");
return ds;
}
}
使用独立的配置类管理第三方bean
public class JdbcConfig {
//1.定义一个方法获得要管理的对象
//2.添加@Bean,表示当前方法的返回值是一个bean
@Bean
public DataSource dataSource (){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.driver");
ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
ds.setUsername("root");
ds.setPassword("root");
return ds;
}
}
将独立的配置类加入核心配置
方法一:导入式
使用@Import注解手动加入配置类到核心配置,此注解只能添加一次,多个数据请用数据格式
@Configuration
@Import(JdbcConfig.class)
public class SpringConfig {
}
方法二:扫描式(不推荐使用)
@Configuration
public class JdbcConfig {
//1.定义一个方法获得要管理的对象
//2.添加@Bean,表示当前方法的返回值是一个bean
@Bean
public DataSource dataSource (){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.driver");
ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
ds.setUsername("root");
ds.setPassword("root");
return ds;
}
}
使用@ComponentScan注解扫描配置类所在的包,加载对应的配置信息
@Configuration
@ComponentScan("com.example.annotation_third_bean_manager.config")
public class SpringConfig {
}
为第三方bean 注入资源
第三方bean依赖注入
简单类型注入
public class JdbcConfig {
//1.定义一个方法获得要管理的对象
//2.添加@Bean,表示当前方法的返回值是一个bean
@Value("com.mysql.jdbc.driver")
private String driver;
@Value("jdbc:mysql://localhost:3306/spring_db")
private String url;
@Value("root")
private String userName;
@Value("root")
private String password;
@Bean
public DataSource dataSource ( ){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url );
ds.setUsername(userName );
ds.setPassword(password );
return ds;
}
}
引用类型依赖注入
public class JdbcConfig {
//1.定义一个方法获得要管理的对象
//2.添加@Bean,表示当前方法的返回值是一个bean
@Value("com.mysql.jdbc.driver")
private String driver;
@Value("jdbc:mysql://localhost:3306/spring_db")
private String url;
@Value("root")
private String userName;
@Value("root")
private String password;
@Bean
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;
}
}
引用类型注入只需要bean定义方法设置形参即可,容器会根据类型自动装配对象