使用注解开发
1.开启注解扫描
<!--指定要扫描的包,这个包下的注解就会生效--> <context:component-scan base-package="com.qyh.pojo"/> <conetxt:annotation-config/>
2.属性如何注入
//等价于在applicationContext中写 <bean id="user" class="com.qyh.pojo.User"/> //@Component:组件 @Component public class User { //<bean id="user" class="com.qyh.pojo.User"> // <property name="name" value="qyh"/> //</bean> 只适用于简单的类型配置 可以用于set方法上 @Value("qyh") public String name; // @Value("qyh") public void setName(String name) { this.name = name; } }
3.衍生的注解
spring的注解用@Component都可以,但是为了便于mvc三层架构分层的观看性,在开发中我们会用不同的注解去区分不同的层
-
dao【@Repository】
-
service 【@Service】
-
controller 【@Controller】
这四个注解的功能都是一样的,都代表将某个类注册到Spring容器中,装配bean
4.作用域
@Component @Scope("prototype") public class User { //<bean id="user" class="com.qyh.pojo.User"> // <property name="name" value="qyh"/> //</bean> 只适用于简单的类型配置 可以用于set方法上 @Value("qyh") public String name; // @Value("qyh") public void setName(String name) { this.name = name; } }
5.小结
xml与注解:
-
xml 更加万能,适用于任何场合!维护简单方便
-
注解 不是自己的类使用不了,维护相对复杂
xml与注解的最佳配置:
-
xml 用来管理bean;
-
注解只负责完成属性的注入
-
我们在使用的过程中,只需要注意一个问题,必须开启注解支持
<!--指定要扫描的包,这个包下的注解就会生效--> <context:component-scan base-package="com.qyh"/> <conetxt:annotation-config/>
使用Java的方式配置Spring
我们现在不使用Spring的xml配置了,全权交给Java来做
JavaConfig是Spring的一个子项目,在Spring4之后,它成为了一个核心功能
使用注解开发
1.开启注解扫描
<!--指定要扫描的包,这个包下的注解就会生效--> <context:component-scan base-package="com.qyh.pojo"/> <conetxt:annotation-config/>
2.属性如何注入
//等价于在applicationContext中写 <bean id="user" class="com.qyh.pojo.User"/> //@Component:组件 @Component public class User { //<bean id="user" class="com.qyh.pojo.User"> // <property name="name" value="qyh"/> //</bean> 只适用于简单的类型配置 可以用于set方法上 @Value("qyh") public String name; // @Value("qyh") public void setName(String name) { this.name = name; } }
3.衍生的注解
spring的注解用@Component都可以,但是为了便于mvc三层架构分层的观看性,在开发中我们会用不同的注解去区分不同的层
-
dao【@Repository】
-
service 【@Service】
-
controller 【@Controller】
这四个注解的功能都是一样的,都代表将某个类注册到Spring容器中,装配bean
4.作用域
@Component @Scope("prototype") public class User { //<bean id="user" class="com.qyh.pojo.User"> // <property name="name" value="qyh"/> //</bean> 只适用于简单的类型配置 可以用于set方法上 @Value("qyh") public String name; // @Value("qyh") public void setName(String name) { this.name = name; } }
5.小结
xml与注解:
-
xml 更加万能,适用于任何场合!维护简单方便
-
注解 不是自己的类使用不了,维护相对复杂
xml与注解的最佳配置:
-
xml 用来管理bean;
-
注解只负责完成属性的注入
-
我们在使用的过程中,只需要注意一个问题,必须开启注解支持
<!--指定要扫描的包,这个包下的注解就会生效--> <context:component-scan base-package="com.qyh"/> <conetxt:annotation-config/>
使用Java的方式配置Spring
我们现在不使用Spring的xml配置了,全权交给Java来做
JavaConfig是Spring的一个子项目,在Spring4之后,它成为了一个核心功能
实体类
//这里这个注解仍然表示这个类被Spring接管了,注册到了容器里 @Component public class User { private String name; public String getName() { return name; } //属性注入值 @Value("qyh") public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
配置文件
package com.qyh.config; import com.qyh.pojo.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.stereotype.Component; //这个也会被注册到容器中 ,因为他本来就是个 @Component //@Configuration: 代表这是一个配置类,就和我们之前看的applicationContext.xml @Configuration @Component("com.qyh.pojo") @Import(MyConfig2.class) public class MyConfig { //注册一个bean 就相当于之前我们在applicationContext.xml中写的一个bean标签 //这个方法的名字就当相于bean标签中的id属性 //这个方法的返回值就相当于bean标签中的class属性 @Bean public User getUser(){ return new User();//就是返回要注入的bean对象! } }
测试类
public class MyTest { public static void main(String[] args) { //如果完全使用了配置类的方式去做,我们就只能通过AnnotationConfig 上下文来获取容器,通过配置类的class对象加载! AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class); User user = context.getBean("getUser", User.class);//取方法名 System.out.println(user.getName()); } }
这种方式常见于SpringBoot,需要记住!
实体类
//这里这个注解仍然表示这个类被Spring接管了,注册到了容器里 @Component public class User { private String name; public String getName() { return name; } //属性注入值 @Value("qyh") public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
配置文件
package com.qyh.config; import com.qyh.pojo.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.stereotype.Component; //这个也会被注册到容器中 ,因为他本来就是个 @Component //@Configuration: 代表这是一个配置类,就和我们之前看的applicationContext.xml @Configuration @Component("com.qyh.pojo") @Import(MyConfig2.class) public class MyConfig { //注册一个bean 就相当于之前我们在applicationContext.xml中写的一个bean标签 //这个方法的名字就当相于bean标签中的id属性 //这个方法的返回值就相当于bean标签中的class属性 @Bean public User getUser(){ return new User();//就是返回要注入的bean对象! } }
测试类
public class MyTest { public static void main(String[] args) { //如果完全使用了配置类的方式去做,我们就只能通过AnnotationConfig 上下文来获取容器,通过配置类的class对象加载! AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class); User user = context.getBean("getUser", User.class);//取方法名 System.out.println(user.getName()); } }
这种方式常见于SpringBoot,需要记住!