构造器注入:
Setter注入:
接口注入 :通过JNDI获取数据库连接资源
配置 bean 的三种方式:
. 在XML中显示配置;{装配简易值;装配集合;命名空间装配},引入第三方包或者服务类 尽量使用XML方式
. 在java的接口和类中实现配置;
. 隐式Bean的发现机制和自动装配原则。
原则:注解为主,以XML为辅
1. @Component 或 @Component(value=”role”)或@Component(“role”) 注解在类上,不注解方法。Spring IOC 会把这个类扫描生成Bean实例。
@Value(“role_name”), 注解在属性字段上,代表的是值的注入
2. @ComponentScan(basePackages={},basePackageClasses={})
basePackages 可以配置多个包,会扫描对应的包和子包。basePackageClasses 配置多个类,spring会根据配置的类所在的包,为包和子包进行扫描装配对应配置的bean。建议使用basePackageClasss(移动包时,IDE会抱错提示)。
3. @Autowired(required=false)自动装配,按类型查找bean,Autowired可以配置属性也可以配置方法,bean的setter方法也可以使用它来完成注入, 还可以装载带有参数的构造方法类。
4. @Primary(优先使用该类注入) @Qualifier (按名称查找) 消除注入歧义
5. @Bean(name=”dataSource”,initMethod=”init”, destroyMethod=”myDestroy”) 注解到方法上 ,将方法返回的对象作为Spring的Bean, 存放在IOC容器。
6. @ImportResource({“classpath:spring-dataSource.xml”})引入spring-data.xml所定义的Bean等资源
7. @Import({ApplicationConfig2.class,ApplicationConfig3.class})引入其他的配置类,相当于引入其他Sprng.xml配置文件。
8. @Profile(“dev”) 使用profile,
也可以在xml中配置
.使用profile,测试中例子@ActiveProfiles(“dev”) 注解在 类上
.Java虚拟机参数spring.profiles.active 启动的profile,如果配置了他,那么default失效;
.Java虚拟机参数spring.profile.default默认启动的profile。
.Spring boot 中可以在application.properties中指定spring.profiles.active
.spring mvc 中 可以设置web环境参数 或者 DispatcherServlet参数,如下:
或:
9. @PropertySource(value={“classpath:database-config.properties”},ignoreResourceNotFound=true) 会加载对应的配置文件,ignoreResourceNotFound=true找不到文件会忽略它,默认是false,抛出异常
· 使用: applicationContext.getEnvironment.getProperty(“jdbc.database.url”),通过 环境来获取对应的配置属性。
· 使用属性占位符${},需要一个@Bean类, 比如 PropertySourcesPlaceholderConfigurer,
然后就可以使用,例如@Value(“${jdbc.database.driver}”)。 也可以在XML指定
10. @Conditional 条件化装配Bean,例如:@Conditional({DataSourceCondition.class})DataSourceCondition需要实现接口Condition的matches方法。条件满足时才装配Bean