【黑马程序员SpringBoot3Vue3全套视频教程springbootvue企业级全栈开发从基础、实战到面试一套通关】 https://www.bilibili.com/video/BV14z4y1N7pg/?p9share_sourcecopy_webvd_sourcee05c15f0310aaccfeffcd5be6bc8a39208记录1.找到ideal内的maven…JetBrains\IntelliJ IDEA \plugins\maven\lib\maven3\bin在此电脑-属性-高级系统设置-环境变量添加MAVEN_HOME …JetBrains\IntelliJ IDEA \plugins\maven\lib\maven3,Path 中添加%MAVEN_HOME%\bin重启终端/IDEAL也可以配置ideal的将完整路径…JetBrains\IntelliJ IDEA \plugins\maven\lib\maven3\bin写入Path中用;分割输入 mvn -vdebugTest-Path...\maven3\bin\mvn.cmd检查添加的路径是否正确True说明文件存在Test-Path用于检查路径是否正确是否有到bin是否有添加到Path是否重启ideal/powershellideal每次启动的时候会抓取环境变量先导入项目springboot-register同样要在父pom里面添加模块springboot-register,在springboot-register里面替换父模块报错这是因为没有导入jar包在终端输入命令powershell或者ideal的powershellmvn install:install-file -DfileC:\Users\Administrator\Desktop\资料\02_Bean注册资料\common-pojo-1.0-SNAPSHOT.jar -DgroupIdcn.itcast -DartifactIdcommon-pojo -Dversion1.0 -DpackagingjarPowerShell 环境下的一个经典“坑”PowerShell 对特殊字符如 - 和 .的解析规则与传统的 Windows CMD 不同。当你输入 -DgroupIdcn.itcast 和 -Dversion1.0 时PowerShell 错误地在 . 处将命令截断了。通过加双引号解决问题mvn install:install-file “-DfileC:\Users\Administrator\Desktop\资料\02_Bean注册资料\common-pojo-1.0-SNAPSHOT.jar” “-DgroupIdcn.itcast” “-DartifactIdcommon-pojo” “-Dversion1.0 -Dpackagingjar”寻找maven仓库mvn --versiong在输出的信息中你会看到一行以 Maven home: 和 Java version: 开头的信息就在这些信息的上面或者下面不远处会明确列出本地仓库的路径。例如你可能会看到像 …/apache-maven-3.9.9 或 Repository 字样后跟着一个路径。如果没有就是默认路径C:\Users\Administrator.m2\repository进入仓库查看是否安装成功在安装信息中可以找到安装的路径在pom中引入依赖-因此可以直接调用包中的对象dependencygroupIdcn.itcast/groupIdartifactIdcommon-pojo/artifactIdversion1.0/version/dependency在外部库可以找到注入countryBean注释调用这个方法时把返回的对象注册为 Bean对象因此我们这里做实验就是直接在启动类里返回一个对象来验证Beanpublic Country country(){return new Country();}ApplicationContext context SpringApplication.run(SpringbootRegisterApplication.class, args);SpringApplication.run();返回Spring 容器本身容器里面是所有的Bean对象Country country context.getBean(Country.class); //Country country context.getBean(BeanName,Country.class);//将类名和类型放一起 System.out.println(country);getBean();如果容器中只有一个 Country 类型的 Bean → 返回那个 Bean如果容器中有多个 Country 类型的 Bean → 报错NoUniqueBeanDefinitionException如果容器中没有 Country 类型的 Bean → 报错NoSuchBeanDefinitionException不建议在启动类中注册大量Bean建议在配置类中在正式的代码中应该让SpringBoot自己把Bean对象注入到对象中ServicepublicclassCountryService{Autowired//private Country country;public void doSomething(){System.out.println(country.getName());}}Bean注入默认的名字是注入注释的方法名getBean(name :“方法名”);Bean(name “myCountry”)可以在注释中设置方法名当一个Bean对象需要依赖于IoC容器中已经存在的Bean对象时只要在方法的声明上声明对应类型的变量即可SpringBoot会自动注入2.Importxxx.class–相当与是手动扫描在启动类上添加Importxxx.class注解spring会自动把xxx类对应的Bean对象添加了Bean注解的方法的返回值注入到IoC容器里只要XXX类是个类就行普通类、配置类都行实际开发中一般使用配置类和ImportSelector实现类如Import(CommonConfig.class)多个Import({CommonConfig.class,Privince.class,…})为了让导入变得优雅实现一个新类ConfigSelector.class来完成导入在启动类上添加ImportConfigSelector.class在新类中实现implements ImportSelector接口重写selectImports方法返回一个字符串数组数组中的每一项就是要注入到IoC容器中的Bean对象对应的全类名可以是多个springboot会自动调用selectorImport方法得到全类名的数组然后把这些类的Bean对象自动注入到IoC容器中全类名获得实际操作中会把需要导入的全类名写到common.imports配置文件中去,一行一个InputStream is CommonImportSelector.class.getClassLoader() // 1. 获取类加载器.getResourceAsStream(“common.imports”); // 2. 读取资源CommonImportSelector.class.getClassLoader()获取 CommonImportSelector 这个类的类加载器类加载器负责从 classpath 中加载类和资源getResourceAsStream(“common.imports”)通过类加载器读取指定名称的资源文件返回一个输入流可以读取文件内容common.imports资源文件名这个文件必须放在 classpath 中技巧ctrlaltt可以包裹选中代码3.组合注解定义在包下新建文件夹anno子包然后新建-java class-annotation,起注解名将注解写在这个类上在三方的包中常见是哟咯EnableXX注解封装import注解4.Bean对象注册条件publicCountrycountry(Value(${country.name})Stringname,Value(${country.system})Stringsystem){CountrycountrynewCountry();country.setName(name);country.setSystem(system);System.out.print(running country method);returncountry;}Value放在参数上从配置文件中提取数据赋值给变量当配置文件中的内容被注释后相当于没有读到数据就不会注册成功会报错期望是有配置注入没有配置就不注入因此引入注册条件配置通过Conditional注解来解决由于Conditional注解比较复杂SpringBoot引入了几个衍生注解使得使用简单常用的三个注解说明ConditionalOnProperty配置文件中存在对应的属性才声明该 beanConditionalOnMissingBean当不存在当前类型的 bean 时才声明该 beanConditionalOnClass当前环境存在指定的这个类时才声明该 beanConditionalOnProperty(prefix “类名如Country”name(“键名”“name”,“system”))配置文件存在的时候会注入不存在的时候不会注入,如过有其他bean对象调用它或者使用getBean会报错正好证明没有注入成功ConditionalOnMissingBean(Country.class)IoC容器中没有注入Country.class的时候注入,反之如果有则报错ConditionalOnClass(name “org.springframework.web.servlet.DispatcherServler”)如果当前环境中存在DispatcherServlet则注入(这个在web起步依赖中如果没引入则没有)反之报错注册条件在自定义Starter或者SpringBoot源码中常见
黑马SpringBoot3+Vue3学习记录 四:ideal内置maven,ideal终端环境变量,jar包注册为Bean,自定义注释,注册条件
【黑马程序员SpringBoot3Vue3全套视频教程springbootvue企业级全栈开发从基础、实战到面试一套通关】 https://www.bilibili.com/video/BV14z4y1N7pg/?p9share_sourcecopy_webvd_sourcee05c15f0310aaccfeffcd5be6bc8a39208记录1.找到ideal内的maven…JetBrains\IntelliJ IDEA \plugins\maven\lib\maven3\bin在此电脑-属性-高级系统设置-环境变量添加MAVEN_HOME …JetBrains\IntelliJ IDEA \plugins\maven\lib\maven3,Path 中添加%MAVEN_HOME%\bin重启终端/IDEAL也可以配置ideal的将完整路径…JetBrains\IntelliJ IDEA \plugins\maven\lib\maven3\bin写入Path中用;分割输入 mvn -vdebugTest-Path...\maven3\bin\mvn.cmd检查添加的路径是否正确True说明文件存在Test-Path用于检查路径是否正确是否有到bin是否有添加到Path是否重启ideal/powershellideal每次启动的时候会抓取环境变量先导入项目springboot-register同样要在父pom里面添加模块springboot-register,在springboot-register里面替换父模块报错这是因为没有导入jar包在终端输入命令powershell或者ideal的powershellmvn install:install-file -DfileC:\Users\Administrator\Desktop\资料\02_Bean注册资料\common-pojo-1.0-SNAPSHOT.jar -DgroupIdcn.itcast -DartifactIdcommon-pojo -Dversion1.0 -DpackagingjarPowerShell 环境下的一个经典“坑”PowerShell 对特殊字符如 - 和 .的解析规则与传统的 Windows CMD 不同。当你输入 -DgroupIdcn.itcast 和 -Dversion1.0 时PowerShell 错误地在 . 处将命令截断了。通过加双引号解决问题mvn install:install-file “-DfileC:\Users\Administrator\Desktop\资料\02_Bean注册资料\common-pojo-1.0-SNAPSHOT.jar” “-DgroupIdcn.itcast” “-DartifactIdcommon-pojo” “-Dversion1.0 -Dpackagingjar”寻找maven仓库mvn --versiong在输出的信息中你会看到一行以 Maven home: 和 Java version: 开头的信息就在这些信息的上面或者下面不远处会明确列出本地仓库的路径。例如你可能会看到像 …/apache-maven-3.9.9 或 Repository 字样后跟着一个路径。如果没有就是默认路径C:\Users\Administrator.m2\repository进入仓库查看是否安装成功在安装信息中可以找到安装的路径在pom中引入依赖-因此可以直接调用包中的对象dependencygroupIdcn.itcast/groupIdartifactIdcommon-pojo/artifactIdversion1.0/version/dependency在外部库可以找到注入countryBean注释调用这个方法时把返回的对象注册为 Bean对象因此我们这里做实验就是直接在启动类里返回一个对象来验证Beanpublic Country country(){return new Country();}ApplicationContext context SpringApplication.run(SpringbootRegisterApplication.class, args);SpringApplication.run();返回Spring 容器本身容器里面是所有的Bean对象Country country context.getBean(Country.class); //Country country context.getBean(BeanName,Country.class);//将类名和类型放一起 System.out.println(country);getBean();如果容器中只有一个 Country 类型的 Bean → 返回那个 Bean如果容器中有多个 Country 类型的 Bean → 报错NoUniqueBeanDefinitionException如果容器中没有 Country 类型的 Bean → 报错NoSuchBeanDefinitionException不建议在启动类中注册大量Bean建议在配置类中在正式的代码中应该让SpringBoot自己把Bean对象注入到对象中ServicepublicclassCountryService{Autowired//private Country country;public void doSomething(){System.out.println(country.getName());}}Bean注入默认的名字是注入注释的方法名getBean(name :“方法名”);Bean(name “myCountry”)可以在注释中设置方法名当一个Bean对象需要依赖于IoC容器中已经存在的Bean对象时只要在方法的声明上声明对应类型的变量即可SpringBoot会自动注入2.Importxxx.class–相当与是手动扫描在启动类上添加Importxxx.class注解spring会自动把xxx类对应的Bean对象添加了Bean注解的方法的返回值注入到IoC容器里只要XXX类是个类就行普通类、配置类都行实际开发中一般使用配置类和ImportSelector实现类如Import(CommonConfig.class)多个Import({CommonConfig.class,Privince.class,…})为了让导入变得优雅实现一个新类ConfigSelector.class来完成导入在启动类上添加ImportConfigSelector.class在新类中实现implements ImportSelector接口重写selectImports方法返回一个字符串数组数组中的每一项就是要注入到IoC容器中的Bean对象对应的全类名可以是多个springboot会自动调用selectorImport方法得到全类名的数组然后把这些类的Bean对象自动注入到IoC容器中全类名获得实际操作中会把需要导入的全类名写到common.imports配置文件中去,一行一个InputStream is CommonImportSelector.class.getClassLoader() // 1. 获取类加载器.getResourceAsStream(“common.imports”); // 2. 读取资源CommonImportSelector.class.getClassLoader()获取 CommonImportSelector 这个类的类加载器类加载器负责从 classpath 中加载类和资源getResourceAsStream(“common.imports”)通过类加载器读取指定名称的资源文件返回一个输入流可以读取文件内容common.imports资源文件名这个文件必须放在 classpath 中技巧ctrlaltt可以包裹选中代码3.组合注解定义在包下新建文件夹anno子包然后新建-java class-annotation,起注解名将注解写在这个类上在三方的包中常见是哟咯EnableXX注解封装import注解4.Bean对象注册条件publicCountrycountry(Value(${country.name})Stringname,Value(${country.system})Stringsystem){CountrycountrynewCountry();country.setName(name);country.setSystem(system);System.out.print(running country method);returncountry;}Value放在参数上从配置文件中提取数据赋值给变量当配置文件中的内容被注释后相当于没有读到数据就不会注册成功会报错期望是有配置注入没有配置就不注入因此引入注册条件配置通过Conditional注解来解决由于Conditional注解比较复杂SpringBoot引入了几个衍生注解使得使用简单常用的三个注解说明ConditionalOnProperty配置文件中存在对应的属性才声明该 beanConditionalOnMissingBean当不存在当前类型的 bean 时才声明该 beanConditionalOnClass当前环境存在指定的这个类时才声明该 beanConditionalOnProperty(prefix “类名如Country”name(“键名”“name”,“system”))配置文件存在的时候会注入不存在的时候不会注入,如过有其他bean对象调用它或者使用getBean会报错正好证明没有注入成功ConditionalOnMissingBean(Country.class)IoC容器中没有注入Country.class的时候注入,反之如果有则报错ConditionalOnClass(name “org.springframework.web.servlet.DispatcherServler”)如果当前环境中存在DispatcherServlet则注入(这个在web起步依赖中如果没引入则没有)反之报错注册条件在自定义Starter或者SpringBoot源码中常见