##Sping框架IOC中常用的注解大家一定要记住
Sping框架IOC中常用的注解
一,用于创建对象的注解:
##1,@Component
作用:把资源让sping来管理,相当于在xml中配置一个bean
属性:value:指定bean 的id,如果不指定value属性,默认bean 的id就是当前类的类名,首字母小写。
~1,@Contoller @Service @Respository
他们三个注解都是针对一个的衍生注解,他们的作用及属性都是一摸一样的,不过@Contoller针对的是表现层的注解,@Service针对的是业务层的注解,@Respository针对的是持久层的注解
注意:如果注解中有且只有一个属性要赋值时,且名称是value,value在赋值时可以不写。
@Component//当我们把一个类当成我们需要的配置,或者工具类的时候可以用到
public class TransactionManager {
@Autowired
private ConnectionUtil connectionUtil;
二,相当于注入的注解:
相当于:<property name="" ref="">
##1,@Autowired
作用:自动按照类型注入,当使用注解注入属性时,set方法可以省略,它只能注入其他bean类型,当有多个类型匹配时,使用要注入的对象变量名称作为bean的id,在psing容器查找,找到了可以注入,找不到就会报错。
public class AccountDaoImpl implements AccountDao {
@Autowired
QueryRunner queryRunner;
@Autowired
ConnectionUtil connectionUtil;
上面这个是在持久层,我们需要用到queryRunner这个对象,所以可以直接用这个注解,可以自动注入,方便我们使用
public class AccountServiceImpl implements AccountService {
@Autowired
AccountDao accountDao;
@Autowired
TransactionManager transactionManager;
上面这个是业务层,但是需要用到持久层的对象,所以我们可以用这个注解,方便使用
##2,@Qualifer
作用:在自动按照类型注入的基础上,再按照bean的id注入,他在给字段注入时不能独立使用,必须和@Autowired一起使用,但是给方法参数注入时,可以独立使用。
属性:value指定bean 的id
@Autowired @Qualifier("id") QueryRunner queryRunner;
##3,@Resource
作用:直接按照Bean的id注入,他只能注入其他bean类型
属性:name指定bean 的id
##4,@Value
作用:注入基本数据类型和string'类型的数据
属性:value用于指定值
三,相当于作用于范围的注解:
相当于:<bean id="" class="" scope="">
##1,@Scope
作用:指定bean的作用范围
属性:value指定范围的值
四,和生命周期相关的(了解)
相当于:<bean id="" class="" init-method="" destroy-method="" />
##1,@PostConstruct
作用:用于指定初始方法
##2,@PreDestory
作用:用于指定销毁方法
五,新注解
##1,@Configuration
作用:用于指定当前类时一个spring配置类,当创建容器时会从该类上加载注解,获取容器时需要使用AnnotationApplicationContext
属性:value用于指定配置类的字节码
##2,@ComponentScan
作用:用于指定sping再初始化容易时需要扫描的包,作用和spring的xml配置文件中的<context:component-scan base- package="com.itheima"/>是一样的。
##3,@Bean
作用:该注解只能写在方法上,表明此方法创建一个对象,并且放入spring容器中
属性:name给当前的@Bean注解方法创建的对象指定一个名称(即bean的id)。
##4,@PropertySource
作用:用于加载.properties文件中的配置,例如我们配置数据源时,可以把连接数据库的信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置。
属性:value[] 用于指定properties文件位置,如果是在类路径下,需要协商classpath;
##5,@Import
作用:用于导入qita配置类,再引入其他配置类时,可以不用再写@Configuration注解,当然,协商也没问题,
属性:value 用于指定其他配置类的字节码
##6,@Runwith(常用)
@RunWith(SpringJUnit4ClassRunner.class)
##7,@ContextConfiguration(常用)
@ContextConfiguration("classpath:applicationContext.xml")