企业网站网页设计的步骤,东莞外贸公司网站建设,网站建设找谁好,临海网站制作费用如何记账使用Idea导入第三方jar包 在porn.xml种添加的第三方jar包依赖#xff0c;并刷新 可以在启动类中尝试调用 以上放到启动类中#xff0c;不推荐#xff0c;建议创建一个专门定义的类 package com.geji.config;import cn.itcast.pojo.Country;
import cn.itcast.pojo.Province;…使用Idea导入第三方jar包 在porn.xml种添加的第三方jar包依赖并刷新 可以在启动类中尝试调用 以上放到启动类中不推荐建议创建一个专门定义的类 package com.geji.config;import cn.itcast.pojo.Country;
import cn.itcast.pojo.Province;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;Configuration
public class CommonConfig {//注入Country对象Beanpublic Country country(){return new Country();}//对象默认的名字是方法名Bean
// Bean“aa”也可以改默认的对象名public Province province(){return new Province();}
}在入口文件中调用注意调用默认的是类名也可以通过Bean(aa)起别名 以上因为在入口文件的同级目录下会自动扫描所以可以直接用如果不在同级目录需要使用import 以上如果有很多类就会非常的臃肿所以做一些封装
定义一个文件 定义一个类实现ImportSelector接口并且读取刚刚配置的文件 package config;import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
//ctrl alt tal
//alt enter
public class CommonImportSelector implements ImportSelector {Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {ListString importsnew ArrayList();InputStream isCommonImportSelector.class.getClassLoader().getResourceAsStream(common.imports);BufferedReader brnew BufferedReader(new InputStreamReader(is));String linenull;try {while((linebr.readLine())!null){imports.add(line);}} catch (IOException e) {e.printStackTrace();} finally {if(br!null){try {br.close();} catch (IOException e) {e.printStackTrace();}}}
// return new String[]{config.CommonConfig};return imports.toArray(new String[0]);}
}以上可以通过在启动类添加import(CommonImportSelector )注解调用但是后面有可能还有其他注解进一步对注解进行封装创建注解类 package anno;import config.CommonImportSelector;
import org.springframework.context.annotation.Import;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;//表示可以在类上面使用
Target(ElementType.TYPE)
//表示运行时可用
Retention(RetentionPolicy.RUNTIME)
Import(CommonImportSelector.class)
public interface EnableCommonConfig {}入口文件调用注解类 运行成功 Bean的注册条件
以上类没有实例化数据没什么用如果要实例化的话一般通过配置文件的方式
配置文件添加数据 在类中读取配置文件实例化类并返回数据 Configuration
public class CommonConfig {//注入Country对象//ConditionalOnProperty(prefixcountry,name {name,system})Beanpublic Country country(Value(${country.name}) String name, Value(${country.system}) String system){Country countrynew Country();country.setName(name);country.setSystem(system);return country;}
以上如果配置文件中没有则会报错所以需要添加注册条件的注释常用的有以下几种
ConditionalOnProperty配置文件中存在对应的属性才声明该beanConditionalonMissingBean当不存在当前类型的bean时才声明该beanConditionalonclass当前环境存在指定的这个类时才声明该bean
这部分内容纯了解举第一个为例子
配置文件中注释掉相应的数据 原本代码会报错
但是添加就好了 ConditionalOnProperty(prefixcountry,name {name,system})