标签:java class mvc 自动扫描 image 视图 repos 现在 报错
声明:本博客仅仅是一个初学者的学习记录、心得总结,其中肯定有许多错误,不具有参考价值,欢迎大佬指正,谢谢!想和我交流、一起学习、一起进步的朋友可以加我微信Liu__66666666
这是简单学习一遍之后的记录,后期还会修改。
? “Bean”本意为”豆子“,豆子本身就是种子,种豆得豆;而在java中,“类”又叫“javaBean”,就相当于种子,我们可以通过类来创建对象,例如有个Apple类,那我们就可以通过这个类来获得Apple实例对象。
? 我们都知道Spring是通过容器来管理Bean的,其实容器中内容的基本单位就是bean,Spring中有很多个bean,每个bean对应一个javaBean。
? 我们如果想种苹果的话,需要自己亲手种,这样很麻烦。那怎么办呢?现在有家店,你给他苹果种子,他就可以帮你种树,并将成熟的苹果交给你;而Spring就相当于这家店,你把JavaBean给他,他就把Bean放在容器里培养,当你需要一个实例对象的时候,他就会给你,就完全省去了我们手动创建对象的过程。
<img src="https://img2018.cnblogs.com/blog/1799182/201909/1799182-20190922131158405-811366751.png" alt="image-20190922113348386" style="zoom:50%;" margin="0 auto"/>
控制反转配置方式
一个基于XML配置的控制反转Demo
创建一个项目(建议通过Maven/Gradle来管理项目,本文使用Maven)
导入jar包:通过Maven/Gradle等自动导入或手动下载导入
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.0.RELEASE</version>
</dependency>
在java或resources目录下创建applicationContext.xml文件,它是Spring 的核心配置文件。
<?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
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
</beans>
在src/main/java/ioc下创建Apple.java类
package ioc;
public class Apple {
private Integer id;
private String color;
public Apple() {
}
// 此处略去所有getter、setter方法
//此处略去toString方法
}
在applicationContext.xml中将Apple这个类添加到Spring容器中
<?xml version="1.0" encoding="UTF-8"?>
<!--这里为了省空间直接把beans里面的属性省略掉了-->
<beans>
<!--这样配置的话,Spring会使用javaBean中的无参构造帮我们实例化对象-->
<!--所以一定要写无参构造-->
<bean id="apple" class="ioc.Apple"/>
</beans>
bean标签里的id属性,是每个bean的唯一标识,我们可以在java代码中通过这个id获取到该bean对应的实例对象;class属性是该类的全限定名。
编写测试类
public class AppleTest {
//考虑到部分朋友没接触过Junit所以这里就这样简单测试下
public static void main(String[] args) {
//这里获取的是applicationContext.xml这个配置文件的对象
//通过它可以获取配置文件中配置的bean对象
ApplicationContext context=
new ClassPathXmlApplicationContext("applicationContext.xml");
//调用ApplicationContext的getBean(String id,Class<T> clazz)方法
//获取对应的实例对象,我们定义了apple所以就写上”apple“
Apple apple = context.getBean("apple", Apple.class);
//获取到对象之后就可以正常使用了
apple.setId(1);
apple.setColor("green");
System.out.println(apple);
}
}
输出结果:
Apple{id=1, color=‘green‘}
OK,是我们预期的结果。经过一顿操作是不是觉得Spring好像也很麻烦?但是Spring不这样用,这只是个demo,实际用起来会非常方便简洁。
一个基于注解的控制反转Demo
创建项目(建议通过Maven/Gradle来管理项目,本文使用Maven)
导入jar包,见上文“一个基于XML配置的控制反转Demo”
创建applicationContext.xml和Apple类(同上)
为Apple类添加注解(就不用配bean标签了)
@Component
public class Apple {}
? id默认为类名的首字母小写形式,例如Apple的id为apple,AppleService的id为appleService
也可使用value属性指定:@Component(value = "apple")
? 注解写在类声明的上方,注解有@Component、@Controller、@Service、@Repository,这四个注解的作用完全相同,设计四个主要为了区分不同的层,例如@Controller是用于视图控制层、@Service用于服务层、@Repository用于持久层。当然,如果在持久层用@Controller也不会报错,但是不建议这样写。
在applicationContext.xml开启注解并配置包扫描
开启注解:<context:annotation-config/>
配置包扫描(就是设置一下让Spring帮我们自动扫描哪些包,例如设置了名为ioc的这个包,那ioc这个包下所有添加了@Component/@Controller/@Service/@Repository注解的JavaBean都会被自动添加到Spring 的容器中)
<context:component-scan base-package="ioc"/>
bese-package这个属性可以配置多个包,以半角逗号分隔,例如base-package=“ioc,mvc”
编写测试类
public class AppleTest {
public static void main(String[] args) {
ApplicationContext context=
new ClassPathXmlApplicationContext("applicationContext.xml");
Apple apple = context.getBean("apple", Apple.class);
apple.setId(1);
apple.setColor("green");
System.out.println(apple);
}
}
输出结果:
Apple{id=1, color=‘green‘}
OK,结果还是符合预期。
总结
标签:java class mvc 自动扫描 image 视图 repos 现在 报错
原文地址:https://www.cnblogs.com/liuhongchen/p/11567095.html