注解:
@注解名称(属性名称1=属性值1,属性名称2=属性值2)
注解作用在类上面,方法上面,属性上面
使用注解可以简化xml配置
Spring中可以用来创建对象提供的注解:
@Component 普通的注解,可以创建任意类型的对象
@Service 一般用在业务逻辑层或者service层
@Controller 一般用在web层
@Repository 一般用在Do层
以上四个注解也可混用,不是一定需要用在哪一层
一、基于注解方式实现对象的创建
1、需要引入依赖
2、开启组件扫描
开启前需要引入名称空间
<!--开启组件扫描 base-packages 是包名,从src以下路径开始
需要扫描多个包的时候,多个包之间使用都好隔开
或者写这一级的上一级包名-->
<context:component-scan base-package="Test"></context:component-scan>
3、创建类,在类上面添加创建对象注解
@Component(value ="userService") //与之前在xml文件中 <bean id ="userservice" class = "UserService">一样
// 注解里面value属性可以省略不写,默认是类名称,首字母小写 注意value与bean里面的id是一个以上
public class UserService {
public void add(){
System.out.println("test");
}
}
测试:
public class Testservise {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService us = context.getBean("userService", UserService.class);
us.add();
}
}
二、基于注解方式实现属性注入
1、属性注入中提供的注解
@Autowired 根据属性类型自动注入
@Qualifier 根据属性名称自动注入
@Resource 可以根据类型也可根据名称注入
@value 注入普通类型
三、纯注解开发
1、创建配置类用来替换配置文件
@Configuration //把当前类当成配置类,用来替换xml配置文件
@ComponentScan(basePackages = {"Test"})//开启组件扫描 ,值为需要扫描的包
public class SpringConfig {
}
之后跟上面的一样,创建类注入属性;
但是在测试的时候不是加载配置文件,而是加载配置类
spring的ioc部分重点:
1、底层原理即工厂模式
2、xml解析
3、反射
4、IOC中基于xml文件实现类实例创建以及注入属性
5、基于注解实现类的实例创建以及注入属性