这几天学ssm,发现太多了,决定总结一下注解的用法
Mybatis
Spring一、自动装配:
首先在xml文件中需要引入注解支持
xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
1.@Autowired 按照类型进行自动装配(ByType)
需要导入的包:spring-aop
个人的理解:
1.首先需要在spring-config.xml中注册要自动装配的类
2.然后在需要装配的私有字段,set方法上添加该注解,即可实现自动装配
public class User {
@Autowired
private Cat cat;
@Autowired
private Dog dog;
}
注意:1.该注解可以在没有Set方法的情况下对字段进行注入
2.字段名可以和注册的名字不一致,因为是按类型匹配
2.@Qualifier 在@Autowired上加上该注解,可以在有多个同类型注册的情况下选择使用哪一个个人的理解:
1.与@Autowired配对使用,而且是用的时候需要赋值:@Qualifier(value="bean中注册的名字")
@Autowired @Qualifier(value = "cat2") private Cat cat; @Autowired @Qualifier(value = "dog2") private Dog dog;
注意:1.只能和Autowired配对使用
二、自动配置Bean需要引入注解支持
xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
指定注解扫描com.kuang.pojo包下的注解
3.@Component 将被这个注解标注的类注册到bean中
个人理解:1.三步走,引入注解支持,指定被扫描的包,在该包下需要注册bean的类上标注
2.Component中需要传入参数,传入的参数即为bean中所注册的id
@Component("user")
// 相当于配置文件中
public class User {
public String name = "秦疆";
}
注意:1.不要忘了指定生效
4.@Controller:web层 与@Component等效,只不过用在不同层 5.@Service:service层 与@Component等效,只不过用在不同层 6.@Repository:dao层 与@Component等效,只不过用在不同层 7.@Value 可以在不用set方法的情况下对字段的值进行注入个人理解:1.首先Value中需要传入值,用于给注解的字段进行赋值
@Component("user")
// 相当于配置文件中
public class User {
@Value("秦疆")
// 相当于配置文件中
public String name;
}
三、基于Java类进行配置
有了这个注解就可以不用再配置spring-config.xml文件了
1.@Configuration 标注在类上,代表这个类是一个配置类
2.@Bean 与@Configuration配对使用,在类中的方法上使用,代表注册这个类中的方法到bean中
@Configuration //代表这是一个配置类
public class MyConfig {
@Bean //通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
public Dog dog(){
return new Dog();
}
}
注意:被标注@Bean的方法,方法的返回值就是bean的类型,方法名就是bean的id
开启注解支持前者是针对已经在xml中配置注册过的bean生效,后者是指定拿个地方的注解能自动配置bean
@Bean和@Component的区别网上大体搜了一下概念,看下来感觉就是@Bean比@Component要更加灵活,因为一个类通过@Component只能注册一个bean,而@Bean可以通过创建多个方法来创建不同的bean,可能是这么一回事吧?
SpringMVC



