注解使用
注解可以替代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的基本配置
猪猪侠要努力呀!