1. 程式人生 > 其它 >Spring-專案搭建

Spring-專案搭建

XML 配置檔案建立

目錄結構

main
  │  
  ├─java
  │  └─com
  │      ├─pojo
  │      │      User.java
  │      │      
  │      └─test
  │             AppConfig.java
  │              
  └─resources
         applicationConrext.xml

說明

  • 使用 ClassPathXmlApplicationContext 可以基於 配置檔案 載入 Spring 的上下文。
    • 英文單詞讀音:克拉斯 爬服 埃克斯邁歐 阿普雷 kei 什 康泰斯特
  • 注意:
    • 需要使用 <bean> </bean> 標籤將 類注入到 Spring 容器中。

例項

  • applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                https://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="user" class="com.pojo.User">
        <property name="name" value="琴江"/>
    </bean>

</beans>
  • 實體類
package com.pojo;

public class User {

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
  • 測試
package com.test;

import com.pojo.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AppConfig {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationConrext.xml");

        User user = applicationContext.getBean("user",User.class);
        System.out.println(user.getName());
    }
}

註解開發建立

目錄結構

java
 └─com
     │  Entitlement.java
     │  JavaConfigTest.java
     │  
     └─config
             AppConfig.java

說明

  • 使用 AnnotationConfigApplicationContext 可以實現基於 Java 配置類載入 Spring 的應用上下文。

  • 注意:

    • 需要在 配置類 中使用 @Bean 標籤將 類 注入到 Spring 容器中。
    • 或者使用 @ComponentScan 註解自動將 符合條件的注入到 Spring 容器中。

示例

  • AppConfig.java
package com.Test.config;

import com.Test.Entitlement;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.Test")  // 自動掃描
public class AppConfig {

    @Bean
    public Entitlement entitlement() {
        return new Entitlement();
    }

    @Bean   // 沒指定名字,該 Bean 的 id 就是方法名
    public Entitlement Entitlement() {
        return new Entitlement();
    }
}
  • Entitlement.java
package com.Test;

public class Entitlement {
    private String name;
    private int time;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getTime() {
        return time;
    }
    public void setTime(int time) {
        this.time = time;
    }
}
  • JavaConfigTest.java
package com.Test;

import com.Test.config.AppConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;


public class JavaConfigTest {
    public static void main(String[] arg) {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();

        ctx.register(AppConfig.class);
        ctx.refresh();

        Entitlement ent = (Entitlement)ctx.getBean("entitlement");
        ent.setName("entitlement11");
        ent.setTime(1);
        System.out.println(ent.getName());
        System.out.println(ent.getTime());

        Entitlement ent2 = (Entitlement)ctx.getBean("Entitlement");
        ent2.setName("Entitlement22");
        ent2.setTime(2);
        System.out.println(ent2.getName());
        System.out.println(ent2.getTime());

        ctx.close();
    }
}

XML 配合 註解建立

目錄結構

main
  ├─java
  │  └─com
  │      ├─pojo
  │      │      User.java
  │      │      
  │      └─test
  │              AppConfig.java
  │              
  └─resources
          applicationContext.xml

說明

  • 使用 ClassPathXmlApplicationContext 可以基於 配置檔案 載入 Spring 的上下文。

例項

  • applicationContext
<?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">

    <!-- 匯入註解支援 -->
    <context:annotation-config/>

    <!-- 指定要掃描的包,這個包下的註解就會生效 -->
    <context:component-scan base-package="com.pojo"/>

</beans>
  • 實體類
package com.pojo;

import org.springframework.stereotype.Component;

@Component
public class User {

    public String name = "秦軍";

}
  • 測試
package com.test;

import com.pojo.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AppConfig {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationConrext.xml");

        User user = applicationContext.getBean("user",User.class);
        System.out.println(user.name);
    }
}