什么是注解
-
注解是代码特殊标记,格式为:@注释名称(属性名 = 属性值.....)
-
注解可以作用在类上、方法上、属性上。
-
使用注解的目的:简化xml配置
Spring针对Bean管理中创建对象提供了哪些注解
- @Component
- @Service
- @Controller
- @Repository
上面的四个注解的功能是一样的,都可以用来创建bean实例,区分开来只是便于区分
基于注解方式实现对象的创建
- 第一步 在xml中添加context约束
- 第二步 开启扫描
关于扫描的用法
<!--use-default-filters="false" 表示现在不使用默认filter,自己配置filter
context:include-filter 设置扫描哪些内容
type="annotation" 表示扫描注解
expression="org.springframework.stereotype.Controller" 表示选择注解为controller
整体理解一下就是在 "com.csy.spring1"包下扫描 注解为Controller的类
-->
<context:component-scan base-package="com.csy.spring1" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--与上面的区别在 下面除了指出条件的内容都不扫其他都扫-->
<context:component-scan base-package="com.csy.spring1" use-default-filters="false">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
- 添加注解
属性注入的注解
-
@AutoWired 根据属性类型进行自动注入
-
@Qualifier 根据属性的名称进行注入
//和@Autowire一起使用,解决有多个实现类的问题
@Service
public class UserServiceImpl implements UserService{
@Autowired
//和@Autowire一起使用,解决有多个实现类的问题
@Qualifier(value ="useri")
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
private UserDao userDao ;
@Override
public void getUser() {
userDao.getUser();
}
}
-
@Resource 可以根据类型注入,也可以根据名称注入
-
@Value 注入普通类型属性
完全注解开发
- 创建配置类,替代配置文件
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration //把当前类当做配置类,替代配置文件
@ComponentScan(basePackages = "com.csy.spring1") //开启注解扫描
public class SpringConfig {
}
@Test
public void test3(){
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
Object useri = context.getBean("useri");
System.out.println(useri);
}