Spring框架由配置文件转化为注解开发
Spring Framework的注解开发相比之前的代码量是降低了耦合、简化了书写。可以说是简单几行代码就可以实现你需要的功能,相当方便。
假如我们在做一个项目时,所有的内容都配置在.xml文件上,在Java文件和配置文件来回转换,也是相当麻烦和耗时的。为了解决这些个问题,Spring引入了注解,通过”@注解名称”的方式,让注解与Java Bean紧密结合,既大大减少了配置文件的体积,又增加了Java Bean的可读性与内聚性。
一、Spring的原始注解:
Spring组件扫描:
//代表 base-package="路径" 能够扫描到路径下的注解
<context:component-scan base-package="com.itheima.springmvc"></context:component-scan>
作用:
注意:使用注解开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法
二、配置文件转化为@(注解)**
@Component的使用
<!--给com.itheima.dao.impl.DaoImpl路径下的DaoImpl配置对象,存入Spring容器-->
<bean id="userDao" class="com.itheima.dao.impl.DaoImpl"></bean>
转化为!
在DaoImpl上配置 @Component(“daoImpl”)
这里括号里面的参数相当于<bean>里面的id,假如不加参数那么id自动封装为"类名"的首字母小写
注意!!!这里的
@Component、@Controller、@Service、@Repository
使用的作用都是一样,但是便于程序员分析,更加清晰,这个类的具体作用(三层架构)
@Autowired的使用
<bean id="findServiceImpl " class="com.itheima.service.Impl.FindServiceImpl ">
在方法名上配置 @Autowired 加@Qualifier(“userDao)
<property name="findDao" ref="findDao"></property>
</bean>-->
@Service("findServiceImpl")
public class FindServiceImpl implements FindService {
//可以不适用配置文件,然后可以获取到FindDao接口对象
@Autowired
//获取查询对象
private FindDao findDao;
@Autowired+@Qualified
//根据id配置对象
@Autowired
@Qualifier("findDao")
//获取查询对象
private FindDao findDao;
简单的注解已经讲解结束了。现在来走一波
//构造容器取出FindServiceImpl的对象,然后就可以根据对象调用方法了
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
FindServiceImpl findService = app.getBean(FindServiceImpl.class);
然而我们想不用配置文件也是可以的 ,只需要在上面加上几行这样的代码
直接在类名上加载
@Controller
//指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解
@Configuration("classpath:applicationContext.xml")
//指定Spring在初始化容器时所要扫描的包
@ComponentScan("com.itsource")
public class ControllerServlet {
@PropertySource的作用
·加载Properties文件得配置:
不管使用注解还是配置文件实现,做的事情还是那些事情,但注解和XML都不是万能的,满足自己的需求哪种方式更加简便,让程序更加简洁更好。没有哪个是最优的,在合适的场景选择合适的解决方案这才是重要的。