Spring/Springboot——JavaConfig
2024-08-27 20:32:02
1、认识JavaConfig
JavaConfig是Spring的一个子项目,在Spring4之后成为一个核心功能
JavaConfig中使用的注解:
@Configuration
在类上打上这一标签,表示这个类是配置类
@ComponentScan
相当于xml的
<context:componentscan basepakage=""/>
@Import(MyConfig2.class)
导入其他的配置类,合并配置信息,相当于xml中的
<import resource="xxx.xml"/>
@Bean
bean的定义,相当于xml的
<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc
相当于xml的
<mvc:annotation-driven/>
@ImportResource
相当于xml的
<import resource="applicationContext-cache.xml"/>
@PropertySource
spring 3.1开始引入,它是基于java config的注解,用于读取properties文件
@Profile
spring3.1开始引入,一般用于多环境配置,
激活时可用@ActiveProfiles注解,@ActiveProfiles("dev")
等同于xml配置
<beans profile="dev">
<bean id="beanname" class="com.pz.demo.ProductRPC"/>
</beans>
<!--激活该profile spring.profiles.active,也可设置默认值 spring.profiles.default-->
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</context-param>
XML配置唯一的问题是,只有在运行时环境时你才能发现各种配置及语法错误,但是如果使用JavaConfig的方式的话,它会在编码时提示这些问题。
JavaConfig类能互相import合并配置或是继承并重写其中的Bean方法。
这种Java配置类的方式就不需要使用Spring的xml配置了, 全部由Java类+注解的方式实现,实现如下:
实体类:
@Component //注入bean
public class User {
private String name;
public String getName() {
return name;
}
@Value("ps") //属性值注入
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
配置类:
@Configuration //Configuration代表这是一个配置类,就如applicationContext.xml
@ComponentScan("com.spong.pojo") //扫描指定包下的使用注解注入的类
@Import(MyConfig2.class) //导入其他的配置类,配置信息合并
public class MyConfig {
//注册一个bean,相当于xml中的bean标签
//方法名就相当于bean中的id
//返回值就相当于bean中的class
@Bean
public User getUser(){
return new User(); //返回要注入到bean的对象
}
}
测试类:
public class MyTest {
public static void main(String[] args) {
//如果完全使用了配置类配置,就只能通过AnnotationConfig的上下文对象获取容器,通过配置类的class对象来加载bean
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
User user = context.getBean("getUser",User.class);
System.out.println(user);
}
}
注意:在Web环境中,需要在web.xml中加入如下代码:
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.packtpub.learnvaadin.springintegration.SpringIntegrationConfiguration</param-value>
</context-param>
最新文章
- 4-4 grep及正则表达式
- CSS的::selection使用方法
- next_permutation 和 一个不成功的案例
- WSDL Style和use的组合方式说明
- 最新的windows xp sp3序列号(绝对可通过正版验证)
- 《Java程序设计》第十周学习总结
- 有用好看的CSS+JS+table 导航
- 简单易懂的命名空间及use的使用
- Spring 3.0 注解注入详解
- 效率神器 Workflow 实例分享
- C# Excel写入数据及图表
- [Maven]Maven构建可执行的jar包(包含依赖jar包)
- 纠错式教学法对比鼓励式教学法 -----Lily、贝乐、英孚,乐加乐、剑桥国际、优学汇、北外青少
- [NOIP2017普及组]棋盘
- [转] Webpack 打包优化之体积篇
- 桐桐的数学游戏(N皇后)
- POJ.2774.Long Long Message/SPOJ.1811.LCS(后缀自动机)
- Docker存储方式选型建议
- 爬取知乎话题async使用协程
- Python全栈day19(函数补充)