目录
1.创建一个Spring IoC容器
public class Spring容器启动类 {
public static void main(String[] args) {
//ApplicationContext就是Spring容器的顶级接口
//AnnotationConfigApplicationContext是其中的一个实现类,它的作用是:
//(1)扫描指定的包路径下,使用Spring框架注解的类
//(2)注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
ApplicationContext context
= new AnnotationConfigApplicationContext("org.example");
2.注册Bean对象到容器
2.1通过类注解
//以下4个注解,都是**类注解**,用于注册Bean对象
//注册的方式,默认的Bean ID(名称),是类名首字母小写
@Controller
//@Service
//@Repository
//@Component
//以上都是单例的---注册为普通的javaBean对象
//@Configuration---注册为配置类对象
//被扫描到才能注测到容器---1.类注解2.路径
public class Bean对象1 {
public void sayHello(){
System.out.println("Hello");
}
}
2.2通过方法注解
@Configuration
public class AppConfig {
@Bean
public Bean对象2 testBean2_1(){
return new Bean对象2();
}
@Bean
public Bean对象2 testBean2_2(){
return new Bean对象2();
}
}
1.只有类被扫描到,且注册到容器中,方法上的@Bean注解才生效
2.Bean注解的方法所在的类,需要以上5种类注解之一。一般,是在@Configuration配置类中使用,比较规范
3.获取Bean对象
//(1)通过bean的类型
Bean对象1 b1 = context.getBean(Bean对象1.class);
System.out.println(b1);
//(2)通过bean的id(也叫bean的名称)
Bean对象1 b1_2 = (Bean对象1) context.getBean("bean对象1");//这个方法要强制转换一下
System.out.println(b1_2);
//@Bean 方法注册到容器的 对象
Bean对象2 b2_1 = (Bean对象2) context.getBean("testBean2_1");
System.out.println(b2_1);
Bean对象2 b2_2 = (Bean对象2) context.getBean("testBean2_2");
System.out.println(b2_2);
//一个类型,可以注册多个实例对象
//但这样获取bean对象,就只能使用bean id/名称来获取。
//使用类型获取,就会报错
默认注册到容器中的bean id(名称),是类名首字母小写或类名 补充:类名开始连续两个字母大写,bean id就是类名,否则就是首字母小写
不同的类注解用于不同的软件分层中
为什么需要怎么多的类注解也是相同的原因,就是让程序员看到类注解之后,就能直接了解当前类 的用途,比如:
@Configuration:配置层。容器启动就初始化配置
@Controller:表示的是业务逻辑层;接受http请求并返回响应
@Servie:服务层;处理业务逻辑
@Repository:持久层; 数据访问分层:一般是数据库的操作