装载的好处: 简单来说就是实现注入解除依赖, 呵呵,简单点
Spring有很大的灵活性,如果需要用到spring的IOC,AOP的话免不了需要学习他的三种装配机制:
在XML中进行显式配置。
在Java中进行显式配置。
隐式的bean发现机制和自动装配。
自动化装配
Spring从两个角度来实现自动化装配:
组件扫描(component scanning): Spring会自动发现应用上下文
中所创建的bean。
自动装配(autowiring): Spring自动满足bean之间的依赖。
Spring提供了很多组件装配命令, 就满足一个基本的示例来说有如下命令:
@Component 装载以便扫描
@Configuration 配置
@ComponentScan 自动扫描
如果需要装载class,将可以这么写
@Component //通过注解指定该类组件类,告知spring要为它创建Bean
public class className{
}
@Configuration 用于配置, 如果需要使用代码的形式装配的话他和@ComponentScan是在一个类里面的
@Configuration
@ComponentScan(basePackages="autoComponent") // 启用组件扫描
public class className{
}
@ComponentScan里面可以指定类扫描,也可以指定包扫描, 如果他里面的属性是空的那他会默认扫描所在的包,
当然很多东西都需要去查看Spring的文档,当然大多数文档都是英文的, 所以学好英文对一个程序员来说是有多么的重要
Spring文档: https://docs.spring.io/spring/docs/current/javadoc-api/overview-summary.html
下面一个简单的demo实现自动装载, 刚学Spring, 就学到自动装载的时候我就不明白为什么我用了@ComponentScan命令为什么还需要用xml, 当然xml是可以实现装载,在QQ群及网上大多资料得到的信息都是用Spring必须用配置文件才行,要不没法现实, 后来经过自己了解压根就不需要所谓的配置文件一样可以实现自动装载, demo如下:
image.pngpackage autoComponent;
public interface HelloWorldApi {
public void sayHello();
}
package autoComponent;
import org.springframework.stereotype.Component;
@Component // 通过注解指定该类组件类,告知spring要为它创建Bean
public class PersonHelloWorld implements HelloWorldApi {
@Override
public void sayHello() {
System.out.println("Hello World!");
}
}
package autoComponent;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages="autoComponent") // 启用组件扫描
public class HelloWorldConfig {
}
package autoComponent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class HelloWorldTest {
public static void main(String[] args) {
//1. 声明Spring上下文,采用java配置类
ApplicationContext ac = new AnnotationConfigApplicationContext(HelloWorldConfig.class);
HelloWorldApi hwapi = ac.getBean(HelloWorldApi.class);
//通过sayHello()的输入内容可以看到,hwapi为PersonHelloWorld的实例
hwapi.sayHello();
}
}
运行,在控制台里会有如下信息:
image.png
就这样说明已经成功自动装载了, 刚学,多指教
网友评论