注解开发

  • Spring4以后,使用注解形式,需要引入aop的包
  • 配置文件当中,还要引入一个context约束 ```java <?xml version=”1.0” encoding=”UTF-8”?>

  1. <a name="aC8rX"></a>
  2. # Bean 的实现
  3. <a name="F2o5J"></a>
  4. ## 配置扫描哪些包下的注解
  5. ```java
  6. <!--指定注解扫描包-->
  7. <context:component-scan base-package="com.kuang.pojo"/>

在制定包下编写类,增加注解

  1. @Component("user")
  2. // 相当于配置文件中 <bean id="user" class="当前注解的类"/>
  3. public class User {
  4. public String name = "秦疆"; //
  5. }

测试

  1. @Test
  2. public void test(){
  3. ApplicationContext applicationContext =
  4. new ClassPathXmlApplicationContext("beans.xml");
  5. User user = (User) applicationContext.getBean("user");
  6. System.out.println(user.name);
  7. }

属性注入

  • 使用注解注入属性
  • 可以不提供set方法,直接在名上添加value(‘值’)

    1. @Component("user")
    2. // 相当于配置文件中 <bean id="user" class="当前注解的类"/>
    3. public class User {
    4. @Value("秦疆")
    5. // 相当于配置文件中 <property name="name" value="秦疆"/>
    6. public String name;
    7. }
  • 提供set方法,在set方法上添加@value(‘值’)

    1. @Component("user")
    2. public class User {
    3. public String name;
    4. @Value("秦疆")
    5. public void setName(String name) {
    6. this.name = name;
    7. }
    8. }

    衍生注解

    @Controller web层

    @Service service 层

    @Repository dao层

  • 目前功能一致,只是为了更好的进行分层

    作用域

    @Scope

  • singleton 默认的,spring会蚕蛹单利模式创建这个对象,关闭工厂,所有的对象都会被销毁。

  • prototype 多例,关闭工程,所有的对象不会销毁,内部的来及回收机制会回收

    1. @Controller("user")
    2. @Scope("prototype")
    3. public class User {
    4. @Value("秦疆")
    5. public String name;
    6. }

    基于Java类进行配置

  • javaConfig 本来是spring的一个子项目,通过java类的方式提供Bean的定义信息,在Spring4的版本中,javaConfig已正式成为spring4的核心功能。

  • image.png
  • image.png