常用注解
@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件、
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Scope用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
@Resource 默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
@DependsOn:定义Bean初始化及销毁时的顺序
@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用
@Autowired @Qualifier(“personDaoBean”) 存在多个实例配合使用
@GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写,该注解将HTTP Get 映射到 特定的处理方法上。即可以使用@GetMapping(value = “/hello”)来代替@RequestMapping(value=”/hello”,method= RequestMethod.GET)。即可以让我们精简代码。
@Configuration:声明一个类作为配置类,代替xml文件
@configuration注解内部被@component组件注解修饰,所以被@configuration修饰的类可以被ioc容器扫描,进行初始化,加载注解@PropertySource(value=”classpath:jdbc.properties”)内的外部资源文件,对类内的属性进行初始化,再对@Bean注解修饰的方法间接初始化,使用已经初始化的属性值
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替
@Value:属性注入,@value注解注入值只能注入简单类型(普通数值、字符串),不能注入对象类型。所以被放弃使用
@PropertySource(value=”classpath:jdbc.properties”):指定外部属性文件
@PropertySource与@ConfigurationProperties
@PropertySource:加载指定的配置文件;可以给实体类进行属性注入使用单独的配置文件,不配置在主配置文件中。
@ConfigurationProperties(prefix = "person"):将配置文件中配置的每一个属性的值,映射到这个组件中,将本类中的所有属性和配置文件中相关的配置进行绑定;默认从全局配置文件中获取值
/** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = "person":配置文件中哪个下面的所有属性进行一一映射 * * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; * @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值; * */ @PropertySource(value = {"classpath:person.properties"}) @Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private Boolean boss;
大量配置都写在全局配置文件中不方便,根据具体情况编写对应的文件,例如对Person类进行属性注入,可以单独为Person类写一个配置文件,通过注解@PropertySource(value = {"classpath:person.properties"})
将类与配置文件关联,进行属性注入。
@ImportResource
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;(但是不推荐使用,推荐使用配置类方式)
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上 ( 可以写在启动类上 )
@ImportResource(locations = {"classpath:beans.xml"}) // 导入Spring的配置文件让其生效 @SpringBootApplication public class HomeSpringbootGuigu01Application { public static void main(String[] args) { SpringApplication.run(HomeSpringbootGuigu01Application.class, args); } }
编写Spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="helloService" class="com.atguigu.springboot.service.HelloService"></bean> </beans>
但是:SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1、配置类@Configuration-----替代----->Spring配置文件
2、使用@Bean给容器中添加组件
/** * @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件 * * 在配置文件中用<bean><bean/>标签添加组件 * */ @Configuration public class MyAppConfig { //将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名 @Bean public HelloService helloService02(){ System.out.println("配置类@Bean给容器中添加组件了..."); return new HelloService(); } }
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/16686864.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步