企业如何利用HarmonyOS开发工具提升小程序开发效率与合规性
739
2022-09-10
Spring框架复习
1.spring核心概念复习
Spring两大核心:基于工厂模式IOC(DI)和基于动态代理AOP。
其中IOC(DI)是指控制器反转(依赖注入),原来要使用某个类对象实例是必须自己创建,使用spring后就不需要自己创建,由spring创建,需要时直接从spring中获取并且有依赖关系是会spring会通过反射自动注入。
AOP就是不影响正常执行过程的前后加入额外的逻辑。比如权限,日志等,该执行的业务逻辑正常执行知识可以进行权限的判断核日志记录。
2.springXML编程-IOC
下面对ioc进行代码书写回顾:Classpathxml*applictionContext
导入项目所需的依赖
Spring的配置文件
Spring的测试
package com.bruceliu.test;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.Date;public class TestSpringIoc { /** * 基于xml配置文件 */ @Test public void test() throws Exception { //通过xml初始化spring容器 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); System.out.println(context.getBean(Date.class)); //向获取spring中所有的bean的类型id String[] beanDefinitionNames = context.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { System.out.println(beanDefinitionName); } }}
3.spring注解编程-IOC
3.1. 引入
上面是通过配置文件的方式注册bean,其实现在spring提倡以注解驱动的方式实现bean的注册
3.2. 组件注册
3.2.1.配置类&Bean注解
@Configuration:加了这个注解的类就相当于传统的一个applicationContext-xxx.xml@Bean:在标注了@Configuration的类里面的方式上面打上@bean就相当于在applicationContext-xxx.xml配置的一个
//注解类==配置文件@Configuration //告诉spring这是一个注解类public class MainConfig { //相当于在xml中配置了
public class MainConfigTest { @Test public void testIoc(){ //1传统方式xml方式 //ApplicationContext context = new ClassPathXmlApplicationContext( // "applicationContext.xml"); //UserDao userDao = context.getBean(UserDao.class); //System.out.println(userDao.loadUser(1L)); //2 注解方式不需要配置文件,那bean怎么配置呢? 获取容器的时候原来制定配置文件,现在制定配置类 ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class); UserDao userDao = context.getBean(UserDao.class); System.out.println(userDao.loadUser(1L)); String[] beanNamesForType = context.getBeanNamesForType(UserDao.class); for (String beanName : beanNamesForType) { System.out.println(beanName); } }}
3.2.3.@ComponentScan扫描bean
我们原来使用spring的使用不会在xml中一个一个配置bean,我们在再类上加上@Repository,@Service,@Controller @Component,并且注入时可以使用@AutoWired的注解注入。 这一切的功能都需要我们配置包扫描
接下来我们先来看扫描组件,后面再看注入
package com.bruceliu.service;import com.bruceliu.bean.User;import org.springframework.stereotype.Service;@Servicepublic class UserService { public User getUser(Long id){ System.out.println("userservice..."); return null; }}
package com.bruceliu.controller;import com.bruceliu.bean.User;import org.springframework.stereotype.Controller;@Controllerpublic class UserController { //先不拷贝页面,直接打印即可 public User getUser(Long id){ System.out.println("usercontroller..."); return null; }}
//注解类==配置文件@Configuration //告诉spring这是一个注解类@ComponentScan("com.bruceliu")public class MainConfig { //相当于在xml中配置了
public class MainConfigTest { @Test public void testIoc(){ ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class); for (String beanName : context.getBeanDefinitionNames()) { System.out.println(beanName); } }}
3.2.4.高级语法
package com.bruceliu.spring;import com.bruceliu.dao.UserDao;import com.bruceliu.dao.impl.UserDaoImpl;import org.springframework.context.annotation.*;import org.springframework.stereotype.Controller;import org.springframework.stereotype.Service;//注解类==配置文件//注解类==配置文件@Configuration //告诉spring这是一个注解类//@ComponentScan(value = "com.bruceliu")//includeFilters = Filter[] 包含过滤器//excludeFilters = Filter[] 排除过滤器//useDefaultFilters = 使用默认过滤器//多个扫描配置方法:使用ComponentScans@ComponentScans(value = { @ComponentScan(value = "com.bruceliu", //excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class, Service.class}) //关闭默认全部扫描includeFilters才能生效 includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Service.class}),useDefaultFilters = false )})public class MainConfig { //相当于在xml中配置了
public class MainConfigTest { @Test public void testIoc(){ ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class); for (String beanName : context.getBeanDefinitionNames()) { System.out.println(beanName); } }}
注意1分开测试排除和包含 注意2:其他配置类影响-本身扫描也包含配置类
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~