Spring注解笔记

Spring注解笔记,第1张

Spring注解笔记

@Configuration 标识配置类

@ComponentScan(“com.jt”) 包扫描的注解 使Spring注解有效

=====

@Lazy懒加载  不写默认true 

@Bean 将自己方法的返回值交给Spring容器管理(key=方法名)

@Scope("xxx")单例(singleton)、多例(prototype)

=====

@Component 将该类交给spring容器管理. 通过反射自动实例化对象(key=类名小写)

@Autowired把接口实现类注入当前类 (默认按照类型注入)

@Qualifier("dog")明确注入接口的哪个实现类

 =====

@PostCanstruct创建完对象后 立即(自动)调用(生命周期)

@PreDestory对象销毁前调用(生命周期)

=====

持久层(Mapper数据库交互)  @Repository 

@Repository
public class UserMapperImpl implements UserMapper {
    @Override
    public void addUser() {
        System.out.println("添加user");
    }
}

@Repository被@Component修饰 所以该类也会交给Spring容器管理  源码:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@documented
@Component
public @interface Repository {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}

==

业务层(Service编写业务逻辑) @Service

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public void addUser() {
        userMapper.addUser();
    }
}

//@Service源码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@documented
@Component
public @interface Service {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}

==

控制层(Controller与前端页面交互) @Controller

@Controller
public class UserController {
    @Autowired
    private UserService userService;
    
    public void addUser() {
        userService.addUser();
    }
}

//@Controller源码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@documented
@Component
public @interface Controller {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}

=====

@Value 直接给基本属性赋值

@PropertySource("classpath:/xxx",encoding="utf8") 引入配置文件

读取配置文件时,默认使用的是ISO-8859-1编码 要手动明确编码格式,否则乱码

@Repository
@PropertySource("classpath:/user.properties",encoding ="utf8")//引入配置文件
public class UserMapperImpl implements UserMapper {

    @Value("${username}")//spring el表达式 缩写 spel表达式
    private String username;

    @Override
    public void addUser() {
        System.out.println("add user");
    }
}

 说明:Windows系统中有系统变量中有一个username,如上图所写会获取系统用户名 改为:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5612125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存