1.声明bean
- 通过注解声明bean
使用@Component注解可创建bean,作用和在xml文件中配置<bean id="" class=""/>的功能是一样的。
除了
@Component,还有@Service,@Repository,@Controller注解
- 通过xml配置文件声明bean
<bean id="helloService" class="com.example.HelloServiceImpl"></bean>
- 通过Java代码来声明bean
@Configuration注解表明该类是一个配置类,可在该类的方法上添加@Bean来声明bean
注意:一般配合和@ComponentScan使用
创建好bean后,我们需要扫描bean,什么意思呢?这些bean我们创建好了,但是哪些bean需要放进spring容器中我们不知道,这个时候就需要用到@ComponentScan了
下面重点来讲下@ComponentScan注解,其实@ComponentScan类似于在xml配置文件中写如下文件:
<context:component-scan base-package="com.xxx.xxxx"/>
1.默认扫描
@ComponentScan默认装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
2.扫描路径
使用@ComponentScan默认扫描当前包及其子包下面的bean,如果在@ComponentScan后加上(basePackages="com.xx.xx"),即扫描固定xx包
3.扫描固定的类
可在@ComponentScan注解后面可添加如下内容:
includeFilters=Filter[]:指定只包含的组件
excludeFilters=Filter[]:指定需要排除的组件;
useDefaultFilters=true/false:指定是否需要使用Spring默认的扫描规则:被@Component, @Repository, @Service, @Controller或者已经声明过@Component自定义注解标记的组件;
再多提一点,由于@SpringBootApplication注解里包含了@ComponentScan,所以如果项目中使用了@SpringBootApplication,可直接在@SpringBootApplication注解后面设置扫描路径。
2.自动装配
使用@Autowired(根据类型)注解可对bean进行自动装配
使用@Resource(根据名称,名称是类的第一个字母小写)注解对bean进行自动装配