使用@Component定义bean
例:@Component("bookDao")
public Class BookDaoImpl implements BookDao {}
public class App {
public static void main(String[] args){
ApplicationContext ctx = new ClassPathXnlApplicationContext( “applicationContext-xm1");
BookDao bookDao = (BookDao) ctx. getBean( s: "bookDao");(与上方Component标签中的id为同一个id)
System.out.println(bookDao);
}
}
java类代替Spring核心配置文件
<?xml version="1.e" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema//eans"
xmlns:xsi="http://www.w3.org/2001/XMLSchem:/-instance"
xsi:schemalocation="
http://www.springframework.org/schema/
beãns
http://www.springframework.org/schema/beans/spring-beans.xsd"><context:component-scan base-package-'
Com.itheima'/>(id为包名下的类名)
</beans>
以上代码可以使用以下方式代替
@Configuration
@ComponentScan("com.itheima")(括号中的id为上述代码中base-package中的id)
public class Springconfig {}
@Configuration注解用于设定当前类为配置类
@ComponentScan注解用于设定扫描路径;此注解只能添加一次,多个数据请用数组格式
加载配置类初始化容器
ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class)(括号中写入配置类名)
注解开发bean作用范围与生命周期管理
使用@Scope标签改变bean的作用范围
使用@PostConstruct标签执行bean初始化方法
使用@PreDestroy标签执行bean销毁方法
注解开发依赖注入
使用@Autowired注解开启自动装配模式(按类型)
使用@Qualifier注解开启指定名称装配bean
使用@Value注解开发基本数据类型
注意:@Qualifier标签必须配合标签使用,不可以独立出现
@Service
public class BookServiceImpl implements BookService {
@Autowired
@Qualifier("bookDao")
private BookDao bookDao;
public void setBookDao(BookDao bookDao)
this.bookDao = bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
使用@Propertysource注解加载properties文件
@Configuration
@ComponentScan("com.itheima")
@PropertySource("classpath:jdbc.properties")
public class Springconfig {}
注解开发管理第三方bean
将独立的配置类加入核心配置
方式一:导入式
public class JdbcConfig {
@Bean
public DataSource datasource(){
DruidDataSource ds = new DruidDataSource();
|/相关配置
return ds;
}
}
使用@Import注解手动加入配置类到核心配置,此注解只能添加一次,多个数据请用数组格式
@Configuration
@Import(JdbcConfig.class)
public class Springconfig {}
方式二:扫描式
@Configuration
public class JdbcConfig (
@Bean
public DataSource dataSource()(
DruidDatasource ds = new DruidDataSource();
1/相关配置
return ds;
}
}
使用@ComponentScan注解扫描配置雷所在的包,加载对应的配置类文件
@Configuration
@ComponentScan(("com.itheina.config","con. itheima.service",-con.itheima.dao-})
public class Springconfig {}
使用@Bean配置第三方bean
@Configuration
public class Springconfig {
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDatasource();ds.setDriverClassName("com.mysql.jdbc.Driver");ds.setUrl("jdbc:mysq1://localhost:3306/spring_db");ds.setusername("root");
ds.setPassword("root");
return ds;
}
}
注解开发实现为第三方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;
@Bean
public Datasource datasource()(
DruidDataSource ds = new DruidDatasource();
ds.setDriverClassName(driver);
ds.seturl(url);
ds.setUsername(userName);ds.setpassword(userName);
return ds;
}
}
引用类型依赖注入
@Bean
public DataSource dataSource(BookService bookService){
System.out.println(bookService);
DruidDataSource ds = new DruidDatasource();
1/属性设置
return ds;
}
}
引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象