無xml配置的實現(xiàn)
-
自Spring3.X 以后 spring 提供了很多的注解來代替XML文件的配置弦赖,最核心的是下面兩個注解。
- ::@Configuration:: 標(biāo)注該類是配置類抵代,類似于我們定義的applicationContext.xml
- ::@Bean:: 類似于我們在之前的spring配置文件中配置的
<bean id=" " class="">
有了上面兩個注解我們可以用編碼的方式來完成spring 的相關(guān)配置腾节,接下來我們就來使用java編碼的方式來實現(xiàn)spring配置
1忘嫉、新建一個工程荤牍,里面是使用原生Spring實現(xiàn)無配置文件案腺。
— 建立July-javaconfig 工程
— 在pom.xml中加入一下內(nèi)容:
<properties>
<java.version>1.8</java.version>
<spring.version>5.0.8.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
這里使用spring 5.0.8.RELEASE 版本。
— 在工程中新建包 cn.org.july.spring.service
— 在該包下新建Class HelloService.class
康吵,該service 實現(xiàn)一個方法sayHello()劈榨,代碼如下:
package cn.org.july.spring.service;
/***
* @author***wanghongjie*
* 2018-10-26*
**/
public class HelloService {
public String sayHello(){
return "Hello JavaConfig.....";
}
}
— 在該目錄下創(chuàng)建Class ApplicationConfiguration
,該類相當(dāng)于定義了一個applicationContext.xml。
在ApplicationConfiguration.class 中定義一個方法晦嵌,該方法獲取HelloService
同辣。代碼如下:
package cn.org.july.spring.service;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/***
* 使用 ApplicationConfiguration 代替 配置文件*
* @author wanghongjie
*/
@Configuration //相當(dāng)于定義了一個applicationContext.xml
public class ApplicationConfiguration {
@Bean // 相當(dāng)于在applicationContext.xml中定義一個bean標(biāo)簽
public HelloService helloService(){
return new HelloService();
}
}
— 創(chuàng)建測試類:Application.class
,這里引入一個新的ClassAnnotationConfigApplicationContext
對象惭载。通過該類來加載Spring上下文信息旱函。
存在applicationContext.xml
public static void main(String[] args) {
//所有配置文件
args = new String[] {
"classpath:spring/spring-servlet.xml",
"classpath:spring/ApplicationContext.xml",
"classpath:spring/mybatis-config.xml",
};
ApplicationContext actx = new ClassPathXmlApplicationContext(args);
//得到類的實例
HelloService helloService = (HelloService) actx.getBean("helloService");
//調(diào)用類的方法
helloService.sayHello();
}
— 不使用applicationContext.xml文件獲取Spring上下文信息。
package cn.org.july.spring.service;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Application {
public static void main(String[] args) {
// 獲取spring 容器描滔。
AnnotationConfigApplicationContext configApplicationContext
= new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
//從spring容器中獲取bean
HelloService helloService = configApplicationContext.getBean(HelloService.class);
//方法調(diào)用
String value = helloService.sayHello();
System.*out*.printf(value);
}
}
項目結(jié)構(gòu)如下:
運行結(jié)果:
以上是兩種啟動方式對比棒妨。