使用注解开发
-
在Spring4之后,要使用注解开发必须保证aop的包导入了
-
使用注解需要导入context约束,增加注解的支持
-
属性注入
@Component public class User { //@Value("alice") public String name; @Value("alice") public void setName(String name) { this.name = name; } }
-
@Component三个衍生注解
为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。
@Controller:web层
@Service:service层
@Repository:dao层
写上这些注解,就相当于将这个类交给Spring管理装配了! -
作用域
@Component @Scope("singleton") public class User { //@Value("alice") public String name; @Value("alice") public void setName(String name) { this.name = name; } }
小结
XML与注解:
-
XML可以适用任何场景 ,结构清晰,维护方便
-
注解不是自己提供的类使用不了,开发简单方便
xml与注解整合开发 :推荐最佳实践
- xml管理Bean
- 注解完成属性注入
- 使用过程中, 可以不用扫描,扫描是为了类上的注解
<!--指定要扫描的包,这个包下的注解就会生效--> <context:component-scan base-package="com.gy"/> <!--开启注解的支持--> <context:annotation-config/>
作用:
-
进行注解驱动注册,从而使注解生效
-
用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册
-
如果不扫描包,就需要手动配置bean
-
如果不加注解驱动,则注入的值为null!
-
基于Java类进行配置
JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。
注意:1. 如果开启包扫描,加载配置类以后就可以通过反射拿到配置类中的对象了
2. @Bean只写在方法上,返回的是一个对象,但一般不获取已经在容器中的对象
3. @Bean 可以用于通过方法获取数据库连接池Connection这种对象
实体类
@Component
public class User {
private String name;
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
public String getName() {
return name;
}
@Value("aa")
public void setName(String name) {
this.name = name;
}
}
这是一个配置类
@Configuration//会被spring容器托管,注册到容器中,因为它本来就是一个@Component
@ComponentScan("com.gy.pojo")
@Import(VioletConfig2.class)
public class VioletConfig {
@Bean
public User getUser(){
return new User();
}
}
测试
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(VioletConfig.class);
User getUser = context.getBean("getUser", User.class);
System.out.println(getUser.getName());
}
}
关于这种Java类的配置方式,SpringBoot 和 SpringCloud中会大量看到,我们需要知道这些注解的作用