注解使用

注解可以替代xml文件中的配置,更加快捷方便

 @Component 、@Controller、@Service、 @Repository 注解

  • 目前有一个类 UserDaoImpl, 我们想将这个类交给Spring来管理,让Spring为我们实例化对象,可以在resources/applicationContext.xml 文件中 <beans> 标签下新增 <bean>标签
package com.ll.dao.impl

import com.ll.dao.UserDao

public class UserDaoImpl implements UserDao {

}
<bean id="UserDao" class="com.ll.dao.impl.UserDaoImpl"></bean>
  • 但是上面的方式比较麻烦,因此我们可以在 类上直接添加注解 @Component("UserDao"), 实现和上面一样的效果。(如果不写括号中的值,那么bean的id会默认设置为类名首字母小写的名字,即userDaoImpl)
  • (包扫描)同时需要在 resources/applicationContext.xml 文件中添加一行配置:进行注解扫描,扫描指定的基本包及其子包下的类,识别使用 @Component注解
  <context:component-scan base-package="com.ll"/>

这样就可以使用注解不报错了

package com.ll

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class ApplicationContextTest {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Object userDao = applicationContext.getBean("userDao");
// 这句话和上面一行代码同等作用
Object userDao = applicationContext.getBean(UserDao.class);
        system.out.println(userDao); 
}
}

@Scope 、 @Lazy、 @PostConstruct、@PreDestroy注解

代码示例,此处没有添加 applicationContext.close()方法,所以没有执行到destroy。有需要可以加上

 依赖注入相关注解:@Value、 @Autowired、@Qualifier、@Resource注解

Bean依赖注入的完成主要是通过 xml 的 <property>标签完成的

 @Value

方法一:在属性上 / 在方法上使用@Value,指定值

 方法二:在属性上 / 方法上使用,引入配置文件中的值(注意,需要在xml文件中读取property文件)

 

 

@Autowired

去寻找相同的类型进行注入, 如果同一类型的Bean有多个,尝试根据 属性名 和 bean名进行二次匹配。 匹配成功进行注入,匹配不成功会报错

 

@Qualifier

在上面有多个同一类型Bean的情况下,可以增加@Qualifier注解来根据Bean的名称进行相关注入

 @Resource 一般比较少用

 

非自定义Bean的基本配置

 

 

 

 

 

 

 

 

posted on 2024-05-06 01:24  mlllily  阅读(3)  评论(0编辑  收藏  举报