注解的基本点?
(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值 , …)
(2)注解作用在类,方法,属性上面
(3)使用注解的目的是简化xml配置.
一.基于注解方式实现对象创建
Spring针对bean管理中创建对象提供的注解:
1.@Component
2.@Service :一般用于Service层
3.@Controller :一般用于Controller层
4.@Repository :一般用作DAO层
*上面的四个注解功能是一样的,都可以用来创建bean实例
第一步:导入依赖
spring-aop-xxx.jar
第二步:开启组件扫描
(1)导入命名空间
xmls:context="http://www.springframework.org/schema/context"
(2)开启组件扫描
<!-- 开启扫描
1.如果扫描多个包,多个包可以用逗号分开
2.也可以扫描多个包的共同上层包
-->
<!--逗号分开-->
<context:component-scan base-package="com.abc.entry,com.abc.service"></context:component-scan>
<!--上层包-->
<context:component-scan base-package="com.abc"></context:component-scan>
- 开启扫描器的一些细节
<!--
(默认filter会扫描base-package下的所有东西)
1. user-default-filters="false" 表示不使用默认filter,自己配置filter
2. <context:include-filter> 设置扫描哪些内容
3. <context:exclude-filter> 设置哪些内容不扫描
-->
<context:component-scan base-package="com.abc" user-default-filters="false">
<!--表示扫描 base-package 下面 为Controller 的 annotation(注解)-->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller">
</context:include-filter>
<!--表示 不扫描 base-package 下面 为Controller 的 annotation(注解)-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" >
</context:exclude-filter>
</context:component-scan>
第三步:创建类, 在类上面添加创建对象注解
//相当于<bean id="userService" />
//value也可以省略,默认为类名(首字母小写)
@Component(value = "userService")
public class UserService{
}
二.基于注解方式实现属性注入
对象类型:
1.@Autowired :根据属性类型进行自动装配
2.@Qualifier :根据属性名称进行自动装配,使用@Qualifier的时候必须配合@Autowired一起使用
3.@Resource :可以根据类型,也可以根据名称
普通类型:
4.@Value :注入普通类型属性
@Service
public class UserService{
//定义dao类型属性,不需要添加set方法,添加注入属性注解
@Autowired
private UserDao userDao;
@Autowired
@Qualifier(value="bookDaoImpl")
private BookDao bookDao;
@Resource //根据类型
private PeopleDao peopleDao;
@Resource(name="StudentDaoImpl") //根据名称
private StudentDao studentDao;
@Value(value="张三")
private String name;//name = "张三"
}
三.纯注解
扫描器配置都用注解来写
@Configuration 作为配置类,代替xml文件
@ComponentScan( basePackages={“com.abc”} ) 扫描器
@Configuration
@ComponentScan( basePackages={"com.abc"} )
public class SpringConfig{
}
换注解后,获取bean需要改变
从
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
变为
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
这里就可以理解SpringBoot的一些内容了