-
要想使用注解,必须加入约束和相应配置
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config/> <!--进行注解驱动注册,从而使注解生效,用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册--> </beans>
-
之前用xml文件来配置bean,可以用注解进行代替
- 配置扫描哪些包下的注解
<!--指定注解扫描包--> <context:component-scan base-package="com.kuang.pojo"/>
- 在指定包下编写类,增加注解
@Component("user") // 相当于配置文件中 <bean id="user" class="当前注解的类"/> public class User { public String name = "zhangsan"; }
- 使用注解注入属性
@Component("user") // 相当于配置文件中 <bean id="user" class="当前注解的类"/> public class User { @Value("zhangsan") // 相当于配置文件中 <property name="name" value="zhangsan"/> public String name; }
-
@Component三个衍生注解:将类交给Spring管理装配
为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。
-
@Controller:web层
-
@Service:service层
-
@Repository:dao层
-
-
作用域
@Controller("user") @Scope("prototype") public class User { @Value("zhangsan") public String name; }
-
小结
-
XML可以适用任何场景 ,结构清晰,维护方便
-
注解不是自己提供的类使用不了,开发简单方便
-
xml与注解整合开发 :
-
xml管理Bean
-
注解完成属性注入
-
-
-
基于Java类进行配置
- 实体类
//这里这个注解的意思,就是说明这个类被Spring接管了。注解到了容器中 @Component public class User { @Value("小明") public String name; public String getName() { return name; } public void setName(String name) { this.name=name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
- 将配置文件改为java配置类
//这个也被Spring容器托管,注册到容器里,因为他本来就是一个@Component, // @Component代表这是一个配置类,就和我们之前看的beans.xml是一样的 @Configuration @ComponentScan("com.test.pojo") @Import(MyConfig2.class)//将另一个配置类导入 public class Appconfig_01 { //注册一个bean,就相当于我们之前写的一个bean标签, //这个方法的名字就相当于bean标签的id属性 //这个方法的返回值,就相当于bean标签中的class属性 @Bean public User getUser(){ return new User(); } }
- 测试类
public class Mytest { public static void main(String[] args) { // 如果完全使用了配置类的方式去做,我们就只能通过AnnotationConfig 上下文来获取容器,通过配置类的class对象加载! AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Appconfig_01.class); User user = (User) context.getBean("getUser"); System.out.println(user.toString()); } }