spring(四)注解开发
1.配置文件
<?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">
<!-- 指定要扫描的包,这个包下的注解就会生效,也可以直接扫描范围更大的包,如com.joker-->
<context:component-scan base-package="com.joker.pojo"></context:component-scan>
<!--开启注解的支持-->
<context:annotation-config/>
</beans>
2.常见注解
@Component :组件,用于在类上进行标注。
@Repository:用在dao层上的类的注解
@Service:用在service层上的类的注解
@Controller:用在Controller层上的类的注解
在类使用以上四种注解,表明已经被spring容器托管,就不需要在配置文件中进行进行注册bean。默认他们的beanid就是类名的小写。后面三种注解其实就是第一种注解的衍生注解.
使用上述四种注解,也可以在注解后使用括号加上参数的方式来指定他的beanid
@Repository
public class UserDao {
}
@Value用来在类中的属性,或者set方法上使用,用来注入值,直接在后面加上括号然后传入值即可。
@Component
public class User {
@Value("joker")
public String name;
}
@Scope用来表示该类的模式,一般用来设置该类是单例模式还是原型模式。只需要在后面加上括号并传入singleton或者prototype
3.测试类的使用
public class MyTest {
public static void main(String[] args) {
//获取spring上下文容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取对象,可以发现我们没有配置bean,没有id这个参数,但是因为目前只有一个类,所以默认的对象是类名的小写
User user = context.getBean("user", User.class);
System.out.println(user.name);
}
}
4.思考
有些时候我们发现使用注解其实并不是那么灵活,功能也没有那么强大,因此我们在使用spring进行开发的时候,我们通常是使用配置文件和注解的方法一同进行开发。这样既能节省很多时间,也能时代码更加灵活,便于维护。