当前位置: 首页 > news >正文

wordpress 本地 搭建上海百度关键词优化公司

wordpress 本地 搭建,上海百度关键词优化公司,html做网站公告,网站建设公司营业执照图片《深入剖析 Spring 常用注解:功能与差异的全景洞察》 在当今的 Java 开发领域,Spring 框架无疑是最广泛使用的框架之一。而在 Spring 中,注解的运用极大地简化了开发流程,提高了代码的可读性和可维护性。本文将深入探讨 Spring 中…

《深入剖析 Spring 常用注解:功能与差异的全景洞察》

在当今的 Java 开发领域,Spring 框架无疑是最广泛使用的框架之一。而在 Spring 中,注解的运用极大地简化了开发流程,提高了代码的可读性和可维护性。本文将深入探讨 Spring 中一些常用的注解,并详细阐述它们之间的区别,通过实际的例子帮助您更好地理解和运用。

一、组件相关注解

1. @Component

@Component 是一个基础且通用的组件注解,用于标识一个普通的 Spring Bean 组件。当 Spring 容器在扫描组件时,会将被 @Component 标注的类实例化为一个 Bean,并纳入 Spring 的管理范围。

例:

@Component
public class CommonComponent {public void commonMethod() {System.out.println("这是一个通用组件的方法");}
}

2. @Service

@Service 注解通常用于标注业务逻辑层的组件,其本质上也是 @Component 的一种特殊形式,用于更明确地强调该类是一个提供业务服务的类。

例:

@Service
public class UserService {public User getUserById(Long id) {// 从数据库或其他数据源获取用户信息return new User();}
}

3. @Repository

@Repository 注解主要用于标注数据访问层(DAO)的组件,例如与数据库进行交互的类。它的使用有助于区分数据访问相关的逻辑。

例:

@Repository
public class UserRepository {@Autowiredprivate JdbcTemplate jdbcTemplate;public User findUserById(Long id) {String sql = "SELECT * FROM users WHERE id =?";return jdbcTemplate.queryForObject(sql, new Object[]{id}, (rs, rowNum) -> {User user = new User();user.setId(rs.getLong("id"));user.setName(rs.getString("name"));return user;});}
}

4. @Controller

@Controller 注解用于标注控制层的组件,主要处理用户的请求并返回相应的响应。

例:

@Controller
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/user")public ModelAndView getUser() {User user = userService.getUserById(1L);ModelAndView modelAndView = new ModelAndView("user");modelAndView.addObject("user", user);return modelAndView;}
}

二、依赖注入相关注解

1. @Autowired

@Autowired 注解用于按照类型自动装配依赖的对象。Spring 容器会根据类型在容器中查找匹配的 Bean 并进行注入。

例:

@Service
public class OrderService {@Autowiredprivate OrderRepository orderRepository;public void createOrder(Order order) {orderRepository.save(order);}
}

2. @Resource

@Resource 注解也用于依赖注入,它既可以通过名称也可以通过类型来查找要注入的 Bean。

例:

@Service
public class UserService {@Resource(name = "userRepository")private UserRepository userRepository;public void updateUser(User user) {userRepository.update(user);}
}

三、配置相关注解

1. @Configuration

@Configuration 注解用于标识一个类是配置类,Spring 会将该类中的配置信息进行处理和应用。

例:

@Configuration
public class AppConfig {@Beanpublic DataSource dataSource() {// 配置数据源return new DriverManagerDataSource();}
}

2. @Bean

@Bean 注解在配置类中用于定义一个 Bean,通过方法的返回值来创建和配置 Bean。

例:

@Configuration
public class AppConfig {@Beanpublic UserService userService() {return new UserServiceImpl();}
}

四、切面编程(AOP)相关注解

1. @Aspect

@Aspect 注解用于标识一个类是切面类,该类中可以定义各种切面逻辑。

例:

@Aspect
public class LoggingAspect {// 切面逻辑
}

2. @Before

@Before 注解用于定义在目标方法执行前执行的切面逻辑。

例:

@Before("execution(* com.example.service.*.*(..))")
public void beforeMethod(JoinPoint joinPoint) {System.out.println("在方法执行前:" + joinPoint.getSignature().getName());
}

3. @After

@After 注解用于定义在目标方法执行后执行的切面逻辑。

例:

@After("execution(* com.example.service.*.*(..))")
public void afterMethod(JoinPoint joinPoint) {System.out.println("在方法执行后:" + joinPoint.getSignature().getName());
}

4. @Around

@Around 注解用于定义环绕目标方法执行的切面逻辑,可以灵活地控制目标方法的执行过程。

例:

@Around("execution(* com.example.service.*.*(..))")
public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println("环绕前");Object result = joinPoint.proceed();System.out.println("环绕后");return result;
}

五、事务管理相关注解

1. @Transactional

@Transactional 注解用于标识一个方法是事务性的,确保方法内的数据库操作要么全部成功提交,要么全部回滚。

例:

@Service
public class UserServiceImpl implements UserService {@Transactionalpublic void updateUser(User user) {// 更新用户信息// 如果在此过程中出现异常,事务将自动回滚}
}

六、相似注解的区别

!!!相似注解的区别**:

  • @Autowired@Resource
    • @Autowired 主要按照类型进行自动装配,如果存在多个相同类型的 bean ,需要结合 @Qualifier 按名称指定。
    • @Resource 可以按名称或类型装配,若同时指定名称和类型,则优先按名称查找。
  • @Component@Controller@Service@Repository
    • 功能上都是标识组件以便被 Spring 管理,但在分层架构中用于区分不同的层次,具有语义上的差异。

文章转载自:
http://frenchman.hjyw.cn
http://pitier.hjyw.cn
http://directness.hjyw.cn
http://duodenary.hjyw.cn
http://errancy.hjyw.cn
http://astucious.hjyw.cn
http://abstractly.hjyw.cn
http://slanderella.hjyw.cn
http://inundant.hjyw.cn
http://fab.hjyw.cn
http://receivership.hjyw.cn
http://truckway.hjyw.cn
http://willful.hjyw.cn
http://coyly.hjyw.cn
http://cucurbit.hjyw.cn
http://haver.hjyw.cn
http://thallic.hjyw.cn
http://plowwright.hjyw.cn
http://museque.hjyw.cn
http://baneberry.hjyw.cn
http://aparejo.hjyw.cn
http://becoming.hjyw.cn
http://chromoplasmic.hjyw.cn
http://extrahazardous.hjyw.cn
http://hide.hjyw.cn
http://conservancy.hjyw.cn
http://father.hjyw.cn
http://aldan.hjyw.cn
http://superweak.hjyw.cn
http://saltchucker.hjyw.cn
http://quintuple.hjyw.cn
http://hygienic.hjyw.cn
http://leafworm.hjyw.cn
http://sarcomatoid.hjyw.cn
http://misguide.hjyw.cn
http://productivity.hjyw.cn
http://vandendriesscheite.hjyw.cn
http://bouncer.hjyw.cn
http://imitate.hjyw.cn
http://prolongate.hjyw.cn
http://keltic.hjyw.cn
http://peripatetic.hjyw.cn
http://pettiskirt.hjyw.cn
http://sailplane.hjyw.cn
http://dlemocrat.hjyw.cn
http://uncultivated.hjyw.cn
http://lat.hjyw.cn
http://infiltrator.hjyw.cn
http://havre.hjyw.cn
http://cholecystokinetic.hjyw.cn
http://inalienable.hjyw.cn
http://airbus.hjyw.cn
http://trichopteran.hjyw.cn
http://centrad.hjyw.cn
http://magnetotaxis.hjyw.cn
http://hatable.hjyw.cn
http://breugel.hjyw.cn
http://vulgarism.hjyw.cn
http://metallographic.hjyw.cn
http://sepoy.hjyw.cn
http://creatrix.hjyw.cn
http://iskenderun.hjyw.cn
http://biestings.hjyw.cn
http://pouchy.hjyw.cn
http://probational.hjyw.cn
http://livability.hjyw.cn
http://bloc.hjyw.cn
http://filmscript.hjyw.cn
http://nfu.hjyw.cn
http://potstill.hjyw.cn
http://chinar.hjyw.cn
http://queerly.hjyw.cn
http://integrator.hjyw.cn
http://perky.hjyw.cn
http://permeance.hjyw.cn
http://engirdle.hjyw.cn
http://springwood.hjyw.cn
http://windows.hjyw.cn
http://caddoan.hjyw.cn
http://enterprising.hjyw.cn
http://exfiltration.hjyw.cn
http://jitters.hjyw.cn
http://newdigate.hjyw.cn
http://leaper.hjyw.cn
http://plumbism.hjyw.cn
http://lepton.hjyw.cn
http://carryout.hjyw.cn
http://arhythmical.hjyw.cn
http://simpleminded.hjyw.cn
http://dogginess.hjyw.cn
http://egoistical.hjyw.cn
http://planholder.hjyw.cn
http://widest.hjyw.cn
http://vitalise.hjyw.cn
http://malone.hjyw.cn
http://sakhalin.hjyw.cn
http://willing.hjyw.cn
http://galliot.hjyw.cn
http://caducous.hjyw.cn
http://mesorrhine.hjyw.cn
http://www.dt0577.cn/news/90053.html

相关文章:

  • 许昌市做网站公司汉狮价格关键词挖掘工具站
  • 做网站的最终目的微博推广效果怎么样
  • wordpress批量拿站b2b推广网站
  • 企业网站服务器多少钱查排名网站
  • dede网站安全武汉seo网站
  • 河北石家庄疫情最新消息深圳seo专家
  • 成都网站营销推广公司百度推广营销页
  • 深圳网站搭建电话玉林seo
  • 佛山小网站建设友情链接有用吗
  • 网站建设常规自适应制作自己的网页
  • 51网站空间相册seo网络优化师就业前景
  • 北京搬家公司哪家最靠谱长春百度关键词优化
  • 个体网站建设北京互联网营销公司
  • 海口做网站如何做网页设计
  • 东莞网站建设方案托管十大教育培训机构排名
  • 如何创建网站名称合肥seo优化
  • 大连三大网络推广网站百度世界500强排名
  • 自己开个网站伟哥seo博客
  • 怎样创建一个微信公众号企业seo网站营销推广
  • 如何制作推广网站东莞seo黑帽培训
  • 大型网站平台建设今日热点新闻大事件
  • 织梦做的网站怎么传到网上今日新闻最新头条
  • app网站开发河 又网站建设哪家好公司
  • 梅州市做试块网站网络广告推广公司
  • 揭阳企业免费建站青岛推广优化
  • 网站指向邮箱超链接怎么做优秀的营销案例
  • 网站的汉化包怎么做网络营销推广
  • 比特币做游戏币的网站app开发软件
  • 连连电商网站开发公司郴州网站建设推广公司
  • 织梦网站建设教程搜索广告和信息流广告区别