跟注解相关的标签
通过注解我们可以实现零配置,但是也可以随便配置点东西。
<context:annotation-config/>//开启注解模式
spring默认是开启注解的,所以这个标签没啥用<context:component-scan base-package=""/>
配置注解扫描器,扫描给定包下所有类及子孙包中的类@Component
- 参数value,值是bean的id
- 不给参数时,默认value=类名首字母小写
- 定义在实现类上面,表示当前类是一个spring元素,相当于xml中一个bean标签
@Autowired
- 定义在属性名上面,表示自动注入值,默认byType
- 设置不需要set方法,也可以注入
- 当容器中没有对应类型的元素时,会报错
- 当有多个类型的元素时,也会报错
- 使用@Qualifier指定要注入元素的beanName
- 使用@Primary也可以,用于需要注入时,首选,定义在类的上面
- @Resource(name=””),属性注入,默认按照byName注入
@Autowired
@Qualifier(beanName)
private Dao bean;
@Configuration
- 定义在类上面,表示这个类是一个配置类(相当于是一个applicationContext.xml,spring会解析)。
- 可以在配置类中使用其他注解来配置。
- @ComponentScan
- 参数basePackages,参数值包名
- 参数useDefaultFilters,默认true,不用配置,表示spring的默认扫描过滤器
- 定义在配置类上面,用来配置spring扫描包。和context:component-scan作用一样
- @ComponentScans
- 配置多个扫描包
- 格式:@ComponentScans(value={@ComponentScan(“”),@ComponentScan(“”)})
- 与@Component作用一模一样的注解
- @Controller,控制器层
- @Service,业务层
- @Repository,持久化层
- @Scope
- 作用域,表示单例模式还是多例
- 参数:
- ConfigurableBeanFactory.SCOPE_SINGLETON(单利)
- ConfigurableBeanFactory.SCOPE_PROTOTYPE(多例)
- WebApplicationContext.SCOPE_SESSION(会话范围)
- WebApplicationContext.SCOPE_REQUEST(请求范围)
- @PostConstruct
- 表示配置文件中的init-method,初始化方法
- @PreDestroy
- 表示配置文件中的destroy-method,销毁时方法
- @Layz
- 表示延迟加载。定义在类上
@Bean的使用
@Bean(initMethod="init",destroyMethod="destroy")
@Configuration //表示是一个配置类 类似于一个xml配置文件
public class ReisConfig {
@Bean //类似于配置文件中的 <bean ...>
public RedisProperties redisProps(){
RedisProperties redisProperties = new RedisProperties();
redisProperties.setHost("192.168.37.133");
redisProperties.setPort(6379);
return redisProperties;
}
}