闲话
看书的时候真想偷懒,哈哈~
一、前提
使用注解前,必须要进行相关配置,开启注解的支持
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--开启注解的支持,指定扫描这个包,这下面的注解就会生效 -->
<context:component-scan base-package="com.decade"/>
<context:annotation-config/>
</beans>
二、注解学习
1、bean的注册和属性注入
@Component:组件,该注解相当于在xml中注册bean,即
<bean id="" class="com.decade.pojo.User"/>
@Value:该注解等价于原来XML配置中的
<property name="name" value="十年"/>
具体Java代码为
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class User {
@Value("十年")
public String name;
// 加在这里也可以 @Value("十年")
public void setName(String name) {
this.name = name;
}
}
写个测试类来测一下
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
User user = context.getBean("user", User.class);
System.out.println(user.name);
}
}
2、@Component衍生的注解
@Component有几个衍生的注解,在web开发中,我们会按照mvc三层架构进行分层
- @Repository【dao层】
- @Controller【Controller层】
- @Service【Service层】
这四个注解的功能是一样的,都是代表将某个类注册到Spring中,装配bean
3、自动装配注解
- @Autowired注解是Spring自己定义的,它默认是按照byType的方式实现自动注入,如果存在多个同类型的bean,我们可以使用@Qualifier注解指定使用哪一个bean
- @Nullable注解,表示当前字段可以为null
- @Resource注解是JDK自己定义的,它默认是按照byName的方式实现自动注入,但是它也支持byType的方式。如果name匹配不上(即bean的id),那么就会根据type进行匹配
可以参考我的另外一篇博客 【Spring】Bean的作用域以及Bean的自动装配
4、作用域注解
@Scope,假如配置一个单例作用域的bean,就可以使用@Scope(“singleton”)
5、小结
1)XML配置更加万能,适用于任何场景,维护起来比较简单方便
2)建议还是使用XML来管理bean,注解只负责完成属性的注入,对于比较复杂的属性,例如:数据库配置等还是在XML中统一配置较好
如有错误,欢迎指正
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136785.html