第三方Bean管理
第三方Bean管理
写在Spring配置类中
@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;
}
}
public class App{
public static void main(String[] args){
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
DataSource dataSource = ctx.getBean(DataSource.class);
System.out.println(dataSource);
}
}
使用独立的配置类管理第三方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.xxx.config", "com.xxx.service", "com.xxx.dao"})
public class SpringConfig{
}
第三方Bean依赖注入
简单类型依赖注入
public class JdbcConfig{
@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;
// 1.定义一个方法获得要管理的对象
// 2.添加@Bean,表示当前方法的返回值是一个Bean
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUserName(userName);
ds.setPassword(password);
return ds;
}
}
引用类型依赖注入
@Bean
public DataSource dataSource(BookService BookService){
System.out.println(bookService);
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUserName(userName);
ds.setPassword(password);
return ds;
}
引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象