无XML开发
使用配置类代替xml配置文件
-
@Configuration
- 作用: 指定当前类是一个配置类
-
@ComponentScan,***@ComponentScans***(可以指定多个)
- 作用: 用于指定spring在创建容器时要扫描的包
- 和配置文件中<context:component-scan base-package=“com.xp”>作用一样
- 属性: basePackages,value作用一样,都是用于指定要扫描的包
-
@Bean
-
作用: 用于把当前方法的返回值作为bean对象存入spring的IOC容器中
-
属性: name:用于指定bean的id,当不写时,默认值是当前方法的名称
-
说明: 当使用注解配置方法时,如果方法有参数,我们就要给方法的参数注入值,
会默认给参数添一个@Autowired注解,即去IOC容器中匹配类型,如果匹配到多个,
这时我就要使用***@Qualifier*** 让其进行进一步筛选.如果参数基本类型和String,
我们也可以使用***@Value*** 进行注入
-
-
说明 :
-
使用在类上面的注解比如***@Scope*** ,***@Lazy*** 也可以使用在方法上,作用一样
-
当使用AnnotationConfigApplicationContext创建容器的时把配置座位参数传入的时候,配置类可以不用***@Configuration***
但是如果有多个配置类,只要没有被当做参数传给容器的配置类,都要使用@Configuration
-
AnnotationConfigApplicationContext也可以传入一个包名,作用是把包下所有带有***@Configuration***的类当做配置类
-
问题:当我们的配置类有级别时,这样做并不合适,我们想的是,只把最大的配置类当做参数传入AnnotationConfigApplicationContext
-
@Import
- 作用:在配置类中导入其他的子配置类
- 属性:value 其它配置类的字节码
-
-
@PropertySource(***@PropertySources***)
- 作用 : 加载properties文件到IOC容器
- 属性: value:指定properties文件的路径(classpath:路径, 可以指定类路径) ,encoding:可以指定读取properties文件的编码
- 使用: 要使用properties文件里的值时,可以使用spring的EL表达式(SpEL),例如***@Value***