Spring注解

229 阅读1分钟
什么是注解
  • 注解是代码特殊标记,格式为:@注释名称(属性名 = 属性值.....)

  • 注解可以作用在类上、方法上、属性上。

  • 使用注解的目的:简化xml配置

Spring针对Bean管理中创建对象提供了哪些注解
  • @Component
  • @Service
  • @Controller
  • @Repository

上面的四个注解的功能是一样的,都可以用来创建bean实例,区分开来只是便于区分

基于注解方式实现对象的创建
  • 第一步 在xml中添加context约束

image.png

  • 第二步 开启扫描

image.png

关于扫描的用法

<!--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>
  • 添加注解

image.png

属性注入的注解
  • @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);
}